Création d’une session pour Snowpark Java

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 depuis des paquets pour Snowpark

L’API de Snowpark propose un certain nombre de classes dans différents paquets. Par souci de simplicité, vous pouvez importer ces paquets pour éviter d’avoir à utiliser des noms qualifiés pour les classes.

Par exemple :

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 les méthodes de la classe SessionBuilder. Vous pouvez accéder à un objet SessionBuilder en appelant la méthode statique builder de la classe Session :

import com.snowflake.snowpark_java.*;

...
// Get a SessionBuilder object.
SessionBuilder 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 forme https://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 :

    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 :

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 :

  1. Définissez les propriétés de l’objet SessionBuilder.

    • 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 configFile de l’objet SessionBuilder.

    • Si vous avez construit de façon programmée un Map des propriétés, transmettez Map à la méthode configs de l’objet SessionBuilder.

    Les deux méthodes renvoient un objet SessionBuilder qui possède ces propriétés.

  2. Appelez la méthode create de l’objet SessionBuilder 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.
Session session = Session.builder().configFile("/path/to/properties/file").create();

L’exemple suivant utilise une carte pour définir les propriétés :

import com.snowflake.snowpark_java.*;
import java.util.HashMap;
import java.util.Map;
...
// Create a new session, using the connection properties
// specified in a Map.
// Replace the <placeholders> below.
Map<String, String> properties = new HashMap<>();
properties.put("URL", "https://<account_identifier>.snowflakecomputing.com:443");
properties.put("USER", "<user name>");
properties.put("PRIVATE_KEY_FILE", "</path/to/private_key_file.p8>");
properties.put("PRIVATE_KEY_FILE_PWD", "<if the private key is encrypted, set this to the passphrase for decrypting the key>");
properties.put("ROLE", "<role name>");
properties.put("WAREHOUSE", "<warehouse name>");
properties.put("DB", "<database name>");
properties.put("SCHEMA", "<schema name>");
Session session = Session.builder().configs(properties).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();
Revenir au début