Erstellen einer Sitzung für Snowpark Java

Für die Verwendung von Snowpark in Ihrer Anwendung müssen Sie zuerst eine Sitzung erstellen. Um das Schreiben von Code zu erleichtern, können Sie auch die Namen von Packages und Objekten importieren.

Unter diesem Thema:

Importieren von Namen aus Paketen für Snowpark

Die Snowpark-API bietet eine Reihe von Klassen in verschiedenen Paketen. Der Einfachheit halber können Sie diese Pakete importieren, damit Sie keine qualifizierten Namen für Klassen verwenden müssen.

Beispiel:

  • Das Paket com.snowflake.snowpark_java package enthält die Hauptklassen für die Snowpark-API. Um die Namen in diesem Paket zu importieren, verwenden Sie:

    import com.snowflake.snowpark_java.*;
    
    Copy
  • Das Paket com.snowflake.snowpark_java.types definiert Klassen, die Sie zur Definition von Schemas für semistrukturierte Daten verwenden können.

    import com.snowflake.snowpark_java.types.*;
    
    Copy

Erstellen einer Sitzung für Snowpark

Der erste Schritt zur Verwendung der Bibliothek ist das Einrichten einer Sitzung mit der Snowflake-Datenbank. Zum Erstellen einer Sitzung verwenden Sie die Methoden der Klasse SessionBuilder. Sie können auf ein SessionBuilder-Objekt zugreifen, indem Sie die statische Methode builder der Klasse Session aufrufen:

import com.snowflake.snowpark_java.*;

...
// Get a SessionBuilder object.
SessionBuilder builder = Session.builder();
Copy

Um die Details zum Aufbau einer Sitzung mit einer Snowflake-Datenbank bereitzustellen (z. B. Kontobezeichner, Benutzername), erstellen Sie entweder eine Eigenschaftendatei (eine Textdatei) oder programmgesteuert ein Map-Objekt, das die Eigenschaften enthält.

Legen Sie in der Eigenschaftendatei oder im Map-Objekt die folgenden Eigenschaften fest:

  • URL: Geben Sie hier die URL für Ihr Konto im Format https://account_identifier.snowflakecomputing.com an.

    Siehe Kontobezeichner.

    Wenn der Kontobezeichner Unterstriche (_) enthält, ersetzen Sie diese Unterstriche durch Bindestriche (-).

  • Alle zusätzlichen JDBC-Parameter (siehe Übersicht der Verbindungsparameter für den JDBC-Treiber in der JDBC-Treiberdokumentation), die für die Verbindung mit Snowflake benötigt werden (z. B. USER, ROLE, WAREHOUSE, DB, SCHEMA usw.).

    Bemerkung

    Informationen zum Ändern des Protokolliergrads (z. B. von INFO auf DEBUG) finden Sie unter Ändern der Protokollierungseinstellungen.

  • (Optional) snowpark_request_timeout_in_seconds: Setzen Sie diesen Wert auf die maximale Anzahl von Sekunden, die die Snowpark-Bibliothek in den folgenden Fällen warten soll:

    Der Standardwert für diese Eigenschaft ist 86.400 Sekunden (1 Tag).

    Bemerkung

    Diese Eigenschaft wurde in Snowpark 0.10.0 eingeführt.

Zur Authentifizierung können Sie die gleichen Mechanismen verwenden, die der JDBC-Treiber unterstützt. Sie können zum Beispiel Folgendes verwenden:

Für die Schlüsselpaar-Authentifizierung können Sie Folgendes einstellen:

  • Geben Sie für die Eigenschaft PRIVATE_KEY_FILE den Pfad zur Datei des privaten Schlüssels an.

    Wenn der private Schlüssel verschlüsselt ist, geben Sie zum Entschlüsseln des Schlüssels für die Eigenschaft PRIVATE_KEY_FILE_PWD die Passphrase an.

  • Geben Sie für die Eigenschaft PRIVATEKEY den Zeichenfolgenwert des unverschlüsselten privaten Schlüssels aus der privaten Schlüsseldatei an. (Wenn der private Schlüssel verschlüsselt ist, müssen Sie den Schlüssel entschlüsseln, bevor Sie ihn als Wert der Eigenschaft PRIVATEKEY festlegen.)

So erstellen Sie die Sitzung:

  1. Legen Sie die Eigenschaften im Objekt SessionBuilder fest.

    • Wenn Sie eine Eigenschaftendatei erstellt haben, übergeben Sie den Pfad zur Eigenschaftendatei an die Methode configFile des SessionBuilder-Objekts.

    • Wenn Sie programmgesteuert eine Zuordnung (Map) mit den Eigenschaften erstellt haben, übergeben Sie die Map an die configs-Methode des SessionBuilder-Objekts.

    Beide Methoden geben ein SessionBuilder-Objekt zurück, das diese Eigenschaften hat.

  2. Rufen Sie die Methode create des Objekts SessionBuilder auf, um die Sitzung einzurichten.

Im Folgenden finden Sie ein Beispiel für eine Eigenschaftendatei, die die grundlegenden Parameter für die Verbindung mit einer Snowflake-Datenbank festlegt. Das Beispiel ist für die Verwendung der Schlüsselpaar-Authentifizierung eingerichtet. Geben Sie für PRIVATE_KEY_FILE den Pfad zur Datei des privaten Schlüssels an. Wenn der private Schlüssel verschlüsselt ist, müssen Sie außerdem für PRIVATE_KEY_FILE_PWD die Passphrase zum Entschlüsseln des privaten Schlüssels festlegen:

# 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>
Copy

Alternativ können Sie für die Eigenschaft PRIVATEKEY den Wert des unverschlüsselten privaten Schlüssels aus der privaten Schlüsseldatei angeben.

# 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>
Copy

Im folgenden Beispiel wird diese Eigenschaftendatei zum Erstellen einer neuen Sitzung verwendet:

// Create a new session, using the connection properties
// specified in a file.
Session session = Session.builder().configFile("/path/to/properties/file").create();
Copy

Im folgenden Beispiel wird ein Map-Objekt zum Einstellen der Eigenschaften verwendet:

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();
Copy

Schließen einer Sitzung

Wenn Sie eine Sitzung nicht mehr für die Ausführung von Abfragen benötigen und alle aktiven Abfragen abbrechen möchten, rufen Sie die Methode close des Objekts Session auf. Beispiel:

// 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();
Copy