Snowparkのセッションの作成

アプリケーションでSnowparkを使用するには、セッションを作成する必要があります。コードの記述に便利なように、パッケージやオブジェクトの名前をインポートすることもできます。

このトピックの内容:

Snowparkのパッケージとオブジェクトからの名前のインポート

Snowpark API は、さまざまなパッケージで利用できる多数のクラス、オブジェクト、および関数を提供します。便宜上、パッケージおよびオブジェクトからクラス、オブジェクト、および関数の名前をインポートして、修飾名を使用する必要をなくすことができます。

例:

  • com.snowflake.snowpark パッケージには、Snowpark API のメインクラスが含まれています。このパッケージの名前をインポートするには、次を使用します。

    import com.snowflake.snowpark._
    
  • com.snowflake.snowpark.functions オブジェクトは、ユーティリティ関数(システム定義関数 を含む)を定義します。このオブジェクトから関数名をインポートするには、次を使用します。

    import com.snowflake.snowpark.functions._
    
  • com.snowflake.snowpark.types は、半構造化データのスキーマを定義するために使用できるクラスとオブジェクトを定義します。

    import com.snowflake.snowpark.types._
    

注釈

run.sh スクリプトを使用して Scala REPL を開始 した場合、スクリプトはすでに名前 com.snowflake.snowparkcom.snowflake.snowpark.functions をインポートしています。

Snowparkのセッションの作成

ライブラリを使用する最初のステップは、Snowflakeデータベースとのセッションを確立することです。セッションを作成するには、 SessionBuilder オブジェクトを使用します。 Session コンパニオンオブジェクトの builder フィールドから SessionBuilder オブジェクトにアクセスできます。

import com.snowflake.snowpark._

...
// Get a SessionBuilder object.
val builder = Session.builder

Snowflakeデータベースとのセッションを確立するための詳細(例: アカウント識別子、ユーザー名など)を提供するには、プロパティファイル(テキストファイル)を作成するか、プロパティを含む Map をプログラムで構築します。

プロパティファイルまたは Map で、次のプロパティを設定します。

  • URL: これをアカウントの URL に https://アカウント識別子.snowflakecomputing.com の形式で設定します。

    アカウント識別子 をご参照ください。

    アカウント識別子にアンダースコア(_)が含まれている場合は、それらの下線をハイフン(-)に置き換えます。

  • Snowflakeに接続するために必要な追加の JDBC パラメーター(JDBC ドライバードキュメントの JDBC ドライバーの接続パラメーターリファレンス を参照)(例: USERROLEWAREHOUSEDBSCHEMA など)。

    注釈

    ログレベルを変更するには(例: INFO から DEBUG に)、 ログ設定の変更 をご参照ください。

認証には、 JDBC ドライバーがサポートするのと同じメカニズムを使用できます。たとえば、次を使用できます。

キーペア認証の場合、次のいずれかを実行できます。

  • PRIVATEKEY プロパティを秘密キーに設定します(秘密キー .p8 ファイルには、キャリッジリターン、改行、 -----BEGIN ... PRIVATE KEY----- ヘッダー、および -----END ... PRIVATE KEY----- フッター なし)。

  • PRIVATE_KEY_FILE プロパティを秘密キーファイルへのパスに設定します。

    秘密キーが暗号化されている場合は、キーを復号化するためのパスフレーズに PRIVATE_KEY_FILE_PWD プロパティを設定します。

セッションを作成するには、

  1. Session.builder オブジェクトにプロパティを設定します。

    • プロパティファイルを作成した場合は、プロパティファイルへのパスを Session.builder.configFile メソッドに渡します。

    • プログラムでプロパティの Map を作成した場合は、 MapSession.builder.configs メソッドに渡します。

    どちらのメソッドも、これらのプロパティを持つ builder オブジェクトを返します。

  2. builder オブジェクトの create メソッドを呼び出して、セッションを確立します。

以下は、Snowflakeデータベースに接続するための、基本的なパラメーターを設定するプロパティファイルの例です。この例は、キーペア認証を使用するように設定されています。

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

PRIVATEKEY プロパティは、秘密キーファイルからの秘密キーの値に設定する必要があることに注意してください。秘密キーファイルをポイントする場合は、代わりに PRIVATE_KEY_FILE を設定します。さらに、秘密キーが暗号化されている場合は、秘密キーを復号化するためのパスフレーズに PRIVATE_KEY_FILE_PWD を設定する必要があります。

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

次の例では、このプロパティファイルを使用して新しいセッションを作成します。

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

次の例では、マップを使用してプロパティを設定します。

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

プロパティファイルの例の場合と同様に、 PRIVATEKEY プロパティは、秘密キーファイルからの秘密キーの値に設定する必要があります。秘密キーファイルをポイントする場合は、代わりに PRIVATE_KEY_FILE を設定します。さらに、秘密キーが暗号化されている場合は、秘密キーを復号化するためのパスフレーズに PRIVATE_KEY_FILE_PWD を設定する必要があります。

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