Snowpark Javaのセッションの作成

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

このトピックの内容:

Snowparkのパッケージから名前のインポート

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

例:

Snowparkのセッションの作成

ライブラリを使用する最初のステップは、Snowflakeデータベースとのセッションを確立することです。セッションを作成するには、 SessionBuilder クラスのメソッドを使用します。 Session クラスの静的 builder メソッドを呼び出すと、 SessionBuilder オブジェクトにアクセスできます。

import com.snowflake.snowpark_java.*;

...
// Get a SessionBuilder object.
SessionBuilder 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. SessionBuilder オブジェクトにプロパティを設定します。

    • プロパティファイルを作成した場合は、プロパティファイルへのパスを SessionBuilder オブジェクトの configFile メソッドに渡します。

    • プログラムでプロパティの Map を構築した場合は、 MapSessionBuilder オブジェクトの configs メソッドに渡します。

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

  2. SessionBuilder オブジェクトの 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.
Session session = Session.builder().configFile("/path/to/properties/file").create();
Copy

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

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

セッションを閉じる

クエリの実行にセッションを使用する必要がなくなり、現在実行中のクエリをキャンセルする場合は、 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