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>
  --workload-status
  --display-logs
  --wait-for-completion
  <application.jar | application.py> [<application_arguments>]
Copy

引数

application.jar | application.py

アプリケーションと依存関係を含むファイルへのパス。

[application arguments]

アプリケーションのメインメソッドに渡されるアプリケーション固有の引数。

オプション

--name NAME

アプリケーションの名前。

--exclude-packages [EXCLUDE_PACKAGES ...]

--packages で指定されている依存関係を解決する際に依存関係の衝突を回避するため除外する、groupId:artifactId ペアのコンマ区切りリスト。

--py-files PY_FILES

Pythonアプリ用に PYTHONPATH に配置する .zip ファイル、.egg ファイルまたは .py ファイルのコンマ区切りリスト。

--conf [PROP=VALUEPROP=VALUE ...]

任意のSpark構成プロパティ。

--properties-file FILE

追加プロパティの読み込み元であるファイルへのパス。指定しない場合は、conf/spark-defaults.confが検索されます。

--help, -h

ヘルプメッセージを表示して終了します。

--verbose, -v

追加のデバッグ出力を出力します。

--version

現在のSparkのバージョンを出力します。

Snowflake固有のオプション

--account SNOWFLAKE_ACCOUNT

使用するSnowflakeアカウント。指定されている場合は、connections.toml ファイルのアカウントを上書きします。

--user SNOWFLAKE_USER

使用するSnowflakeユーザー。指定されている場合は、connections.toml ファイルのユーザーを上書きします。

--authenticator SNOWFLAKE_AUTHENTICATOR

Snowflakeでのログインの認証方式。指定されている場合は、connections.toml ファイルの認証コードを上書きします。指定しない場合のデフォルトはユーザーパスワード認証コードです。

--token-file-path SNOWFLAKE_TOKEN_FILE_PATH

Snowflakeの OAuth トークンを含むファイルへのパス。指定されている場合は、connections.toml ファイル内のトークンファイルのパスを上書きします。

--password SNOWFLAKE_PASSWORD

Snowflakeユーザーのパスワード。指定されている場合は、connections.toml ファイルのパスワードを上書きします。

--role SNOWFLAKE_ROLE

使用するSnowflakeロール。指定されている場合は、connections.toml ファイルのロールを上書きします。

--host SNOWFLAKE_HOST

Snowflakeのデプロイ用のホスト。指定されている場合は、connections.toml ファイルのホストを上書きします。

--database SNOWFLAKE_DATABASE_NAME

セッションで使用されるSnowflakeデータベース。指定されている場合は、connections.toml ファイルのデータベースを上書きします。

--schema SNOWFLAKE_SCHEMA_NAME

セッションで使用するSnowflakeスキーマ。指定されている場合は、connections.toml ファイルのスキーマを上書きします。

--warehouse SNOWFLAKE_WAREHOUSE_NAME

セッションで使用するSnowflakeウェアハウス。指定されている場合は、connections.toml ファイルのウェアハウスを上書きします。

--compute-pool SNOWFLAKE_COMPUTE_POOL

指定されたワークロードを実行するためのSnowflakeコンピューティングプール。指定されている場合は、connections.toml ファイルのコンピューティングプールを上書きします。

--comment COMMENT

ワークロードに関連付けられたメッセージ。Snowflakeでワークロードを識別するために使用できます。

--snowflake-stage SNOWFLAKE_STAGE

ワークロードファイルがアップロードされるSnowflakeステージ。

--external-access-integrations [SNOWFLAKE_EXTERNAL_ACCESS_INTEGRATIONS ...]

ワークロードに必要なSnowflake外部アクセス統合。

--snowflake-log-level SNOWFLAKE_LOG_LEVEL

Snowflakeイベントテーブルのログレベル---'INFO''ERROR''NONE'`(デフォルト: :code:'INFO'`)。

--snowflake-workload-name SNOWFLAKE_WORKLOAD_NAME

Snowflakeで実行されるワークロードの名前。

--snowflake-connection-name SNOWFLAKE_CONNECTION_NAME

基本構成として使用する connections.toml ファイルの接続の名前。コマンドライン引数は、connections.toml ファイルの値を上書きします。

--workload-status

ワークロードの詳細ステータスを出力します。

--display-logs

--workload-status が指定されている場合にアプリケーションログをコンソールに出力するかどうか。

--wait-for-completion

クラスターモードでは、指定されている場合は、ブロックモードでワークロードを実行し、完了を待ちます。

--requirements-file REQUIREMENTS_FILE

ワークロードを実行する前にインストールするPythonパッケージの依存関係を含むrequirements.txtファイルへのパス。PyPI の外部アクセス統合が必要です。

--wheel-files WHEEL_FILES

Pythonワークロードを実行する前にインストールする.whlファイルのコンマ区切りリスト。PyPI では利用できないプライベート依存関係に使用します。

一般的なオプションの例

アプリケーションのデプロイ

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
Copy

認証

Snowpark Submit には、Snowflakeで認証するためのさまざまなメソッドが用意されています。少なくとも1つのメソッドを使用する必要があります。接続プロファイルと直接認証は、併用または個別に使用できます。接続プロファイルに対応するフィールドも存在する場合は、コマンドラインオプションによって該当するフィールドが上書きされます。

接続プロファイル

事前構成されたSnowflake接続プロファイルを使用するには:

snowpark-submit \
  --snowflake-connection-name my_connection \
  --snowflake-workload-name MY_JOB \
  app.py
Copy

直接認証

ユーザー名とパスワード

コマンドで認証の詳細情報を直接提示するには:

snowpark-submit \
  --host myhost \
  --account myaccount \
  --user myuser \
  --password mypassword \
  --role myrole \
  --snowflake-workload-name MY_JOB \
  app.py
Copy

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
Copy

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
Copy

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
Copy

依存関係の管理

アプリケーションの依存関係を管理することができます。

Pythonの依存関係

アプリケーションに必要な追加のPythonファイルまたはアーカイブを指定するには:

snowpark-submit \
  --py-files dependencies.zip,module.py \
  --snowflake-workload-name MY_PYTHON_JOB \
  --snowflake-connection-name MY_CONNECTION \
  app.py
Copy

モニタリングと制御

Snowpark Submit ジョブを効率的にモニタリングおよび制御できます。

ジョブの完了待ち

デフォルトでは、Snowpark Submit はジョブを開始し、直ちに結果を返します。ブロッキングモードで実行し、ジョブの終了を待つには:

snowpark-submit \
  --snowflake-connection-name my_connection \
  --snowflake-workload-name MY_JOB \
  --wait-for-completion \
  app.py
Copy

wait-for-completion フラグは、ジョブが完了(正常または失敗で)するまでコマンドがブロックするように指示し、定期的なステータスの更新を示します。これは、Apache Airflowを使用する場合など、他のタスクを進める前にジョブが完了することを確認する必要があるワークフローに有効です。

ワークロードステータスの確認

ワークロードのステータス(実行中または完了)を確認します。

snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status
Copy

このコマンドは、ワークロードに関する次の情報を返します。

  • 現在の状態(DEPLOYINGRUNNINGSUCCEEDEDFAILED

  • 開始時間と期間

  • サービスの詳細

アプリケーションログの表示

ワークロードステータスとともに詳細ログを表示するには:

snowpark-submit --snowflake-connection-name my_connection --snowflake-workload-name MY_JOB --workload-status --display-logs
Copy

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
Copy

ログレベルの構成

Snowflakeイベントテーブルへのアプリケーションのログレベルを制御します。

snowpark-submit \
  --snowflake-log-level INFO \
  --snowflake-workload-name MY_JOB \
  --snowflake-connection-name MY_CONNECTION \
  app.py
Copy

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