Snowpark Javaのセッションの作成¶
アプリケーションでSnowparkを使用するには、セッションを作成する必要があります。コードの記述に便利なように、パッケージやオブジェクトの名前をインポートすることもできます。
このトピックの内容:
Snowparkのパッケージから名前のインポート¶
Snowpark API は、さまざまなパッケージで多数のクラスを提供します。便宜上、これらのパッケージをインポートして、クラスに修飾名を使用する必要をなくすことができます。
例:
com.snowflake.snowpark_javaパッケージ には、Snowpark API のメインクラスが含まれています。このパッケージの名前をインポートするには、
import com.snowflake.snowpark_java.*;
com.snowflake.snowpark_java.typesパッケージ は、半構造化データのスキーマを定義するために使用できるクラスを定義します。
import com.snowflake.snowpark_java.types.*;
Snowparkのセッションの作成¶
ライブラリを使用する最初のステップは、Snowflakeデータベースとのセッションを確立することです。セッションを作成するには、 SessionBuilder
クラスのメソッドを使用します。 Session
クラスの静的 builder
メソッドを呼び出すと、 SessionBuilder
オブジェクトにアクセスできます。
import com.snowflake.snowpark_java.*;
...
// Get a SessionBuilder object.
SessionBuilder builder = Session.builder();
Snowflakeデータベースとのセッションを確立するための詳細(例: アカウント識別子、ユーザー名など)を提供するには、プロパティファイル(テキストファイル)を作成するか、プロパティを含む Map
をプログラムで構築します。
プロパティファイルまたは Map
で、次のプロパティを設定します。
URL
: これをアカウントの URL にhttps://account_identifier.snowflakecomputing.com
の形式で設定します。アカウント識別子 をご参照ください。
アカウント識別子にアンダースコア(
_
)が含まれている場合は、それらの下線をハイフン(-
)に置き換えます。Snowflakeに接続するために必要な追加の JDBC パラメーター(JDBC ドライバードキュメントの JDBC ドライバーの接続パラメーター参照 を参照)(例:
USER
、ROLE
、WAREHOUSE
、DB
、SCHEMA
など)。注釈
ログレベルを変更するには(例:
INFO
からDEBUG
に)、 ログ設定の変更 をご参照ください。(オプション)
snowpark_request_timeout_in_seconds
: 次の場合は、Snowparkライブラリが待機する最大秒数に設定します。依存関係がステージにアップロードされる を待っています。
非同期アクション が完了するのを待っています。
このプロパティのデフォルト値は86400秒(1日)です。
注釈
このプロパティはSnowpark 0.10.0で導入されました。
認証には、 JDBC ドライバーがサポートするのと同じメカニズムを使用できます。たとえば、次を使用できます。
パスワードベースの認証(
PASSWORD
プロパティの設定による)
キーペア認証の場合、次のいずれかを実行できます。
PRIVATE_KEY_FILE
プロパティを秘密キーファイルへのパスに設定します。秘密キーが暗号化されている場合は、キーを復号化するためのパスフレーズに
PRIVATE_KEY_FILE_PWD
プロパティを設定します。PRIVATEKEY
プロパティを秘密キーファイルの 暗号化されていない秘密キー の文字列値に設定します。(秘密キーが暗号化されている場合は、PRIVATEKEY
プロパティの値として設定する前にキーを復号化する必要があります。)
セッションを作成するには、
SessionBuilder
オブジェクトにプロパティを設定します。プロパティファイルを作成した場合は、プロパティファイルへのパスを
SessionBuilder
オブジェクトのconfigFile
メソッドに渡します。プログラムでプロパティの
Map
を構築した場合は、Map
をSessionBuilder
オブジェクトのconfigs
メソッドに渡します。
どちらのメソッドも、これらのプロパティを持つ
SessionBuilder
オブジェクトを返します。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>
代わりに、 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>
次の例では、このプロパティファイルを使用して新しいセッションを作成します。
// Create a new session, using the connection properties
// specified in a file.
Session session = Session.builder().configFile("/path/to/properties/file").create();
次の例では、マップを使用してプロパティを設定します。
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();
セッションを閉じる¶
クエリの実行にセッションを使用する必要がなくなり、現在実行中のクエリをキャンセルする場合は、 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();