Snowpark Scalaのセッションの作成

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

このトピックの内容:

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

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

例:

注釈

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
Copy

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

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

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

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

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

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

    注釈

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

  • (オプション) snowpark_request_timeout_in_seconds: 次の場合は、Snowparkライブラリが待機する最大秒数に設定します。

    このプロパティのデフォルト値は86400秒(1日)です。

    注釈

    このプロパティはSnowpark 0.10.0で導入されました。

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

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

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

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

  • PRIVATEKEY プロパティを秘密キーファイルの 暗号化されていない秘密キー の文字列値に設定します。(秘密キーが暗号化されている場合は、 PRIVATEKEY プロパティの値として設定する前にキーを復号化する必要があります。)

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

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

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

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

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

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

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

代わりに、 PRIVATEKEY プロパティを秘密キーファイルの 暗号化されていない 秘密キーの値に設定できます。

# 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

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

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

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

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

セッションを閉じる

クエリの実行にセッションを使用する必要がなくなり、現在実行中のクエリをキャンセルする場合は、 Session オブジェクトの close メソッドを呼び出します。例:

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