Erstellen einer Sitzung für Snowpark Scala

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 und Objekten für Snowpark

Die Snowpark-API bietet eine Reihe von Klassen, Objekten und Funktionen, die in verschiedenen Paketen verfügbar sind. Der Einfachheit halber können Sie die Namen von Klassen, Objekten und Funktionen aus Paketen und Objekten importieren, um die Verwendung qualifizierter Namen zu vermeiden.

Beispiel:

Bemerkung

Wenn Sie zum Starten der Scala REPL das Skript run.sh verwendet haben, wurden die Namen com.snowflake.snowpark und com.snowflake.snowpark.functions bereits vom Skript importiert.

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 das Objekt SessionBuilder. Sie können auf das SessionBuilder-Objekt über das Feld builder im Begleitobjekt Session zugreifen:

import com.snowflake.snowpark._

...
// Get a SessionBuilder object.
val 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 Session.builder fest.

    • Wenn Sie eine Eigenschaftendatei erstellt haben, übergeben Sie den Pfad zur Eigenschaftendatei an die Methode Session.builder.configFile.

    • Wenn Sie programmgesteuert ein Map-Objekt mit den Eigenschaften erstellt haben, übergeben Sie das Map-Objekt an die Methode Session.builder.configs.

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

  2. Rufen Sie die Methode create des Objekts builder 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.
val session = Session.builder.configFile("/path/to/properties/file").create
Copy

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

// 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
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