Création d’une session pour Snowpark Scala¶
Pour utiliser Snowpark dans votre application, vous devez créer une session. Pour faciliter l’écriture du code, vous pouvez également importer les noms des paquets et des objets.
Dans ce chapitre :
Importation de noms à partir de paquets et d’objets pour Snowpark¶
L’API de Snowpark fournit un certain nombre de classes, d’objets et de fonctions qui sont disponibles dans différents paquets. Pour des raisons de commodité, vous pouvez importer les noms de classes, d’objets et de fonctions à partir de paquets et d’objets pour éviter d’avoir à utiliser des noms qualifiés.
Par exemple :
Le paquet com.snowflake.snowpark contient les classes principales de l’API Snowpark. Pour importer les noms de ce paquet, utilisez :
import com.snowflake.snowpark._
L”objet com.snowflake.snowpark.functions définit les fonctions utilitaires (y compris les fonctions définies par le système). Pour importer les noms de fonctions de cet objet, utilisez :
import com.snowflake.snowpark.functions._
Le paquet com.snowflake.snowpark.types définit les classes et les objets que vous pouvez utiliser pour définir des schémas pour les données semi-structurées.
import com.snowflake.snowpark.types._
Note
Si vous avez utilisé le script run.sh
pour démarrer le REPL Scala, le script importe déjà des noms com.snowflake.snowpark
et com.snowflake.snowpark.functions
.
Création d’une session pour Snowpark¶
La première étape de l’utilisation de la bibliothèque consiste à établir une session avec la base de données Snowflake. Pour créer une session, utilisez l’objet SessionBuilder
. Vous pouvez accéder à l’objet SessionBuilder
par le biais du champ builder
de l’objet compagnon Session
:
import com.snowflake.snowpark._
...
// Get a SessionBuilder object.
val builder = Session.builder
Pour fournir les détails permettant d’établir une session avec une base de données Snowflake (par exemple, l’identificateur du compte, le nom de l’utilisateur, etc.), il faut soit créer un fichier de propriétés (un fichier texte), soit construire de manière programmatique un Map
contenant les propriétés.
Dans le fichier de propriétés ou Map
, définissez les propriétés suivantes :
URL
: définissez ce paramètre sur l’URL de votre compte sous la formehttps://account_identifier.snowflakecomputing.com
.Voir Identificateurs de compte.
Si l’identificateur du compte contient des traits de soulignement (
_
), remplacez-les par des traits d’union (-
).Tout paramètre JDBC supplémentaire (voir Référence Paramètre de connexion pilote JDBC dans la documentation du pilote JDBC) nécessaire à la connexion à Snowflake (par exemple
USER
,ROLE
,WAREHOUSE
,DB
,SCHEMA
, etc.).Note
Pour modifier le niveau de journalisation (par exemple de
INFO
àDEBUG
), voir Modification des paramètres de journalisation.(Facultatif)
snowpark_request_timeout_in_seconds
: définissez ici le nombre maximum de secondes pendant lesquelles la bibliothèque Snowpark doit patienter dans les cas suivants :En attente du chargement de dépendances vers une zone de préparation.
En attente de l’achèvement d’une action asynchrone.
La valeur par défaut de cette propriété est 86400 secondes (1 jour).
Note
Cette propriété a été introduite dans Snowpark 0.10.0.
Pour vous authentifier, vous pouvez utiliser les mêmes mécanismes que ce que le pilote JDBC prend en charge. Par exemple, vous pouvez utiliser :
l’authentification par mot de passe (en définissant la propriété
PASSWORD
)
Pour l’authentification par paire de clés, vous pouvez soit :
Définir la propriété
PRIVATE_KEY_FILE
comme le chemin d’accès au fichier de la clé privée.Si la clé privée est chiffrée, définir la propriété
PRIVATE_KEY_FILE_PWD
sur la phrase secrète permettant de déchiffrer la clé.Définir la propriété
PRIVATEKEY
sur la valeur de chaîne de la clé privée non chiffrée du fichier de clé privée. (Si la clé privée est chiffrée, vous devez déchiffrer la clé avant de la définir comme valeur de la propriétéPRIVATEKEY
).
Pour créer la session :
Définissez les propriétés de l’objet
Session.builder
.Si vous avez créé un fichier de propriétés, transmettez le chemin d’accès au fichier de propriétés à la méthode
Session.builder.configFile
.Si vous avez construit de façon programmée un
Map
des propriétés, transmettezMap
à la méthodeSession.builder.configs
.
Les deux méthodes renvoient un objet
builder
qui possède ces propriétés.Appelez la méthode
create
de l’objetbuilder
pour établir la session.
Voici un exemple de fichier de propriétés qui définit les paramètres de base pour la connexion à une base de données Snowflake. L’exemple est configuré pour utiliser l’authentification par paire de clés. Définissez PRIVATE_KEY_FILE
comme le chemin d’accès au fichier de la clé privée. De plus, si la clé privée est chiffrée, vous devez définir PRIVATE_KEY_FILE_PWD
comme la phrase secrète pour le déchiffrage de la clé privée :
# profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.com
USER = <username>
PRIVATE_KEY_FILE = </path/to/private_key_file.p8>
PRIVATE_KEY_FILE_PWD = <if the private key is encrypted, set this to the passphrase for decrypting the key>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
À la place, vous pouvez définir la propriété PRIVATEKEY
sur la clé privée non chiffrée du fichier de clé privée.
# profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.com
USER = <username>
PRIVATEKEY = <unencrypted_private_key_from_the_private_key_file>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
L’exemple suivant utilise ce fichier de propriétés pour créer une nouvelle session :
// Create a new session, using the connection properties
// specified in a file.
val session = Session.builder.configFile("/path/to/properties/file").create
L’exemple suivant utilise une carte pour définir les propriétés :
// Create a new session, using the connection properties
// specified in a Map.
val session = Session.builder.configs(Map(
"URL" -> "https://<account_identifier>.snowflakecomputing.com",
"USER" -> "<username>",
"PRIVATE_KEY_FILE" -> "</path/to/private_key_file.p8>",
"PRIVATE_KEY_FILE_PWD" -> "<if the private key is encrypted, set this to the passphrase for decrypting the key>",
"ROLE" -> "<role_name>",
"WAREHOUSE" -> "<warehouse_name>",
"DB" -> "<database_name>",
"SCHEMA" -> "<schema_name>"
)).create
Clôture d’une session¶
Si vous n’avez plus besoin d’utiliser une session pour exécuter des requêtes et que vous souhaitez annuler les requêtes en cours d’exécution, appelez la méthode close
de l’objet Session
. Par exemple :
// Close the session, cancelling any queries that are currently running, and
// preventing the use of this Session object for performing any subsequent queries.
session.close();