Snowpark Scalaのセッションの作成¶
アプリケーションで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.snowpark
と com.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://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
プロパティの値として設定する前にキーを復号化する必要があります。)
セッションを作成するには、
Session.builder
オブジェクトにプロパティを設定します。プロパティファイルを作成した場合は、プロパティファイルへのパスを
Session.builder.configFile
メソッドに渡します。プログラムでプロパティの
Map
を作成した場合は、Map
をSession.builder.configs
メソッドに渡します。
どちらのメソッドも、これらのプロパティを持つ
builder
オブジェクトを返します。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>
代わりに、 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.
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>",
"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
セッションを閉じる¶
クエリの実行にセッションを使用する必要がなくなり、現在実行中のクエリをキャンセルする場合は、 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();