Erstellen einer Sitzung für Snowpark

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:

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

    import com.snowflake.snowpark._
    
  • Das Objekt com.snowflake.snowpark.functions definiert Hilfsfunktionen (einschließlich systemdefinierter Funktionen). Um die Funktionsnamen aus diesem Objekt zu importieren, verwenden Sie:

    import com.snowflake.snowpark.functions._
    
  • Das Objekt com.snowflake.snowpark.types definiert Klassen und Objekte, die Sie zur Definition von Schemas für semistrukturierte Daten verwenden können.

    import com.snowflake.snowpark.types._
    

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

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 in der Form https://Kontobezeichner.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.

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:

  • Entweder Sie setzen die Eigenschaft PRIVATEKEY auf den privaten Schlüssel (den Inhalt der privaten Schlüsseldatei .p8 ohne Zeilenumbrüche, Neue-Zeile-Zeichen, die Kopfzeile -----BEGIN ... PRIVATE KEY----- und die Fußzeile -----END ... PRIVATE KEY-----).

  • Oder Sie geben für die Option 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.

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.

# profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.com
USER = <username>
PRIVATEKEY = <private_key_copied_from_the_private_key_file>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>

Beachten Sie, dass die Eigenschaft PRIVATEKEY auf den Wert des privaten Schlüssels aus der privaten Schlüsseldatei festgelegt werden muss. Wenn Sie es vorziehen, auf die private Schlüsseldatei zu verweisen, legen Sie stattdessen PRIVATE_KEY_FILE fest. 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>

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

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>",
    "PRIVATEKEY" -> "<private_key_copied_from_the_private_key_file>",
    "ROLE" -> "<role_name>",
    "WAREHOUSE" -> "<warehouse_name>",
    "DB" -> "<database_name>",
    "SCHEMA" -> "<schema_name>"
)).create

Wie im Beispiel der Eigenschaftendatei muss die Eigenschaft PRIVATEKEY auf den Wert des privaten Schlüssels aus der privaten Schlüsseldatei gesetzt werden. Wenn Sie es vorziehen, auf die private Schlüsseldatei zu verweisen, legen Sie stattdessen PRIVATE_KEY_FILE fest. 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:

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