Snowpark Submit リファレンス¶
Snowpark Submit を使用すると、なじみのあるSparkセマンティクスを使用して、Snowflakeで非インタラクティブなバッチ指向のSparkワークロードを実行できます。
注釈
snowpark-submit は、spark-submit と同じ機能の多くをサポートしています。ただし、SnowflakeでSparkワークロードを実行する場合に必要ないため、一部の機能は省略されています。
構文¶
snowpark-submit
--name <application_name>
--exclude-packages <package_to_exclude> [, <package_to_exclude>, ...]
--py-files <files_to_place_on_path>
--conf <spark_config_property=value> [<spark_config_property=value> ...]
--properties-file <path_to_properies_file>
--help, -h
--verbose, -v
--version
--account <snowflake_account>
--user <snowflake_user>
--authenticator <snowflake_authenticator>
--token-file-path <snowflake_token_file_path>
--password <snowflake_password>
--role <snowflake_role>
--host <snowflake_host>
--database <snowflake_database_name>
--schema <snowflake_schema_name>
--warehouse <snowflake_warehouse_name>
--compute-pool <snowflake_compute_pool>
--comment <comment>
--snowflake-stage <snowflake_stage>
--external-access-integrations <snowflake_external_access_integrations> [, ...]
--snowflake-log-level <snowflake_log_level>
--snowflake-workload-name <snowflake_workload_name>
--snowflake-connection-name <snowflake_connection_name>
--snowflake-grpc-max-message-size <message_size>
--snowflake-grpc-max-metadata-size <metadata_size>
--workload-status
--display-logs
--wait-for-completion
<application.jar | application.py> [<application_arguments>]
引数¶
application.jar | application.pyアプリケーションと依存関係を含むファイルへのパス。
[application arguments]アプリケーションのメインメソッドに渡されるアプリケーション固有の引数。
オプション¶
--conf [PROP=VALUEPROP=VALUE ...]任意のSpark構成プロパティ。
--exclude-packages [EXCLUDE_PACKAGES ...]--packagesで指定されている依存関係を解決する際に依存関係の衝突を回避するため除外する、groupId:artifactId ペアのコンマ区切りリスト。--help, -hヘルプメッセージを表示して終了します。
--name NAME アプリケーションの名前。
--properties-file FILE追加プロパティの読み込み元であるファイルへのパス。指定しない場合は、conf/spark-defaults.confが検索されます。
--py-files PY_FILESPythonアプリ用に PYTHONPATH に配置する
.zipファイル、.eggファイルまたは.pyファイルのコンマ区切りリスト。--verbose, -v追加のデバッグ出力を出力します。
--version現在のSparkのバージョンを出力します。
Snowflake固有のオプション¶
--account SNOWFLAKE_ACCOUNT使用するSnowflakeアカウント。指定されている場合は、
connections.tomlファイルのアカウントを上書きします。--authenticator SNOWFLAKE_AUTHENTICATORSnowflakeでのログインの認証方式。指定されている場合は、
connections.tomlファイルの認証コードを上書きします。指定しない場合のデフォルトはユーザーパスワード認証コードです。--comment COMMENTワークロードに関連付けられたメッセージ。Snowflakeでワークロードを識別するために使用できます。
--compute-pool SNOWFLAKE_COMPUTE_POOL指定されたワークロードを実行するためのSnowflakeコンピューティングプール。指定されている場合は、
connections.tomlファイルのコンピューティングプールを上書きします。--database SNOWFLAKE_DATABASE_NAMEセッションで使用されるSnowflakeデータベース。指定されている場合は、
connections.tomlファイルのデータベースを上書きします。--display-logs--workload-statusが指定されている場合にアプリケーションログをコンソールに出力するかどうか。--external-access-integrations [SNOWFLAKE_EXTERNAL_ACCESS_INTEGRATIONS ...]ワークロードに必要なSnowflake外部アクセス統合。
--host SNOWFLAKE_HOSTSnowflakeのデプロイ用のホスト。指定されている場合は、
connections.tomlファイルのホストを上書きします。--password SNOWFLAKE_PASSWORDSnowflakeユーザーのパスワード。指定されている場合は、
connections.tomlファイルのパスワードを上書きします。--requirements-file REQUIREMENTS_FILEワークロードを実行する前にインストールするPythonパッケージの依存関係を含む
requirements.txtファイルへのパス。PyPI の外部アクセス統合が必要です。--snowflake-stageパラメーターも指定した場合、このパラメーターは機能しません。--role SNOWFLAKE_ROLE使用するSnowflakeロール。指定されている場合は、
connections.tomlファイルのロールを上書きします。--schema SNOWFLAKE_SCHEMA_NAMEセッションで使用するSnowflakeスキーマ。指定されている場合は、
connections.tomlファイルのスキーマを上書きします。--snowflake-connection-name SNOWFLAKE_CONNECTION_NAME基本構成として使用する
connections.tomlファイルの接続の名前。コマンドライン引数は、connections.tomlファイルの値を上書きします。--snowflake-grpc-max-message-size MESSAGE_SIZESnowpark Submit での gRPC 通信の最大メッセージサイズ(バイト単位)。
--snowflake-grpc-max-metadata-size METADATA_SIZESnowpark Submit での gRPC 通信の最大メタデータサイズ(バイト単位)。
--snowflake-log-level SNOWFLAKE_LOG_LEVELSnowflakeイベントテーブルのログレベル---
'INFO'、'ERROR'、'NONE'`(デフォルト: :code:'INFO'`)。--snowflake-stage SNOWFLAKE_STAGEワークロードファイルがアップロードされるSnowflakeステージ。
--snowflake-workload-name SNOWFLAKE_WORKLOAD_NAMESnowflakeで実行されるワークロードの名前。
--token-file-path SNOWFLAKE_TOKEN_FILE_PATHSnowflakeの OAuth トークンを含むファイルへのパス。指定されている場合は、
connections.tomlファイル内のトークンファイルのパスを上書きします。--user SNOWFLAKE_USER使用するSnowflakeユーザー。指定されている場合は、
connections.tomlファイルのユーザーを上書きします。--wait-for-completionクラスターモードでは、指定されている場合は、ブロックモードでワークロードを実行し、完了を待ちます。
--warehouse SNOWFLAKE_WAREHOUSE_NAMEセッションで使用するSnowflakeウェアハウス。指定されている場合は、
connections.tomlファイルのウェアハウスを上書きします。--wheel-files WHEEL_FILESPythonワークロードを実行する前にインストールする.whlファイルのコンマ区切りリスト。PyPI では利用できないプライベート依存関係に使用します。
--workload-statusワークロードの詳細ステータスを出力します。
一般的なオプションの例¶
アプリケーションのデプロイ¶
SnowflakeのSnowpark Container Services(SPCS)は、Sparkアプリケーションを実行するための主要なインフラストラクチャです。SPCS コンピューティングプールを事前に作成しておく必要があります。
Pythonの基本アプリケーション¶
クラスターモードで基本的なPythonアプリケーションをデプロイするには:
snowpark-submit \
--snowflake-workload-name MY_PYTHON_JOB \
--snowflake-connection-name MY_CONNECTION_CONFIG_NAME
app.py arg1 arg2
認証¶
Snowpark Submit には、Snowflakeで認証するためのさまざまなメソッドが用意されています。少なくとも1つのメソッドを使用する必要があります。接続プロファイルと直接認証は、併用または個別に使用できます。接続プロファイルに対応するフィールドも存在する場合は、コマンドラインオプションによって該当するフィールドが上書きされます。
接続プロファイル¶
事前構成されたSnowflake接続プロファイルを使用するには:
snowpark-submit \
--snowflake-connection-name my_connection \
--snowflake-workload-name MY_JOB \
app.py
直接認証¶
ユーザー名とパスワード¶
コマンドで認証の詳細情報を直接提示するには:
snowpark-submit \
--host myhost \
--account myaccount \
--user myuser \
--password mypassword \
--role myrole \
--snowflake-workload-name MY_JOB \
app.py
OAuth¶
OAuth トークンを使用して認証するには:
snowpark-submit \
--host myhost \
--account myaccount \
--authenticator oauth \
--token-file-path /path/to/token.txt \
--snowflake-workload-name MY_JOB \
--compute-pool MY_COMPUTE_POOL \
app.py
Snowflakeリソース¶
ジョブのSnowflakeデータベース、スキーマ、ウェアハウス、およびコンピューティングプールを指定するには:
snowpark-submit \
--database MY_DB \
--schema MY_SCHEMA \
--warehouse MY_WH \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
Snowflakeステージ¶
Snowpark Submit を使用して、Snowflakeステージにファイルを直接保存してアクセスすることができます。
Snowflakeステージのファイルを使用してジョブを送信するには:
snowpark-submit \
--snowflake-stage @my_stage \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
@my_stage/app.py
依存関係の管理¶
アプリケーションの依存関係を管理することができます。
Pythonの依存関係¶
アプリケーションに必要な追加のPythonファイルまたはアーカイブを指定するには:
snowpark-submit \
--py-files dependencies.zip,module.py \
--snowflake-workload-name MY_PYTHON_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
モニタリングと制御¶
Snowpark Submit ジョブを効率的にモニタリングおよび制御できます。
ジョブの完了待ち¶
デフォルトでは、Snowpark Submit はジョブを開始し、直ちに結果を返します。ブロッキングモードで実行し、ジョブの終了を待つには:
snowpark-submit \
--snowflake-connection-name my_connection \
--snowflake-workload-name MY_JOB \
--wait-for-completion \
app.py
wait-for-completion フラグは、ジョブが完了(正常または失敗で)するまでコマンドがブロックするように指示し、定期的なステータスの更新を示します。これは、Apache Airflowを使用する場合など、他のタスクを進める前にジョブが完了することを確認する必要があるワークフローに有効です。
ワークロードステータスの確認¶
ワークロードのステータス(実行中または完了)を確認します。
snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status
このコマンドは、ワークロードに関する次の情報を返します。
現在の状態(
DEPLOYING、RUNNING、SUCCEEDED、FAILED)開始時間と期間
サービスの詳細
アプリケーションログの表示¶
ワークロードステータスとともに詳細ログを表示するには:
snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status --display-logs
display-logs フラグは、アプリケーションの出力ログを取得してコンソールに表示します。これらのログを使用して、以下のタスクを実行できます。
アプリケーションエラーのデバッグ
実行状況のモニタリング
アプリケーション出力を表示する
注釈
ログを取得する準備が整うまでに、数秒から1分までの若干のレイテンシが発生します。イベントテーブルを使用してログデータを格納しない場合、ログは5分以内などの短期間保持されます。
高度な構成¶
高度な構成によって Snowpark Submit ジョブを微調整します。
外部アクセス統合¶
Sparkアプリケーションから外部サービスに接続します。
snowpark-submit \
--external-access-integrations "MY_NETWORK_RULE,MY_STORAGE_INTEGRATION" \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name my_connection \
app.py
ログレベルの構成¶
Snowflakeイベントテーブルへのアプリケーションのログレベルを制御します。
snowpark-submit \
--snowflake-log-level INFO \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name MY_CONNECTION \
app.py
--snowflake-log-levelのオプション:INFO、ERROR、NONE。
ジョブコンテキストの追加¶
Snowflakeでワークロードをより簡単に識別できるように、説明的なコメントを追加します。
snowpark-submit \
--comment "Daily data processing job" \
--snowflake-workload-name MY_JOB \
--snowflake-connection-name my_connection \
app.py