SnowflakeタスクとしてのSnowpark Container Servicesジョブの実行

SnowflakeタスクとしてSnowpark Container Services ジョブサービス を実行できます。Snowflakeタスクとしてジョブサービスを実行すると、統合により、Snowpark Container Servicesの堅牢なコンテナ化とスケーラビリティを活用するシナリオが可能になります。このプロセスは、Snowflakeタスクによって管理されるスケジュールまたはイベントトリガーのデータパイプライン内で直接発生します。

たとえば、次の CREATE TASK コマンドは、1時間ごとにジョブサービスを実行するタスクを作成します。コマンドは、 :doc:`/sql-reference/sql/execute-job-service`SQLコマンドを使用してジョブの詳細を提供します。。

CREATE TASK job_task
SCHEDULE = '60 MINUTE'
AS
  EXECUTE JOB SERVICE
    IN COMPUTE POOL my_compute_pool
    FROM SPECIFICATION $$
    spec:
      containers:
      - name: main
        image: /my_db/my_schema/my_repository/my_job_image:latest
        args:
          - "--process_data"
    $$;
Copy

注釈

  • Snowflakeのジョブタスクは、 サーバーレスモデル をサポートするため、CREATE TASKステートメントでウェアハウスを指定することはありません。

  • ジョブサービスをタスクとして実行する場合は、ジョブサービスを同期的に実行する必要があります。そうしないと、ジョブサービスが完了する前にタスクが完了を報告します。

タスクとして実行されているジョブとの間でデータをやり取りする

タスクグラフ を使用すると、タスクとして実行されるジョブサービスをシームレスに統合する、複雑なマルチステップのデータパイプラインを作成および管理できます。ジョブサービスコード内の サポートされるシステム関数 を使用して、タスクコンテキストにアクセスし、それを使用してタスクグラフの構成と、実行タスクの実行時情報を取得できます。

ジョブサービスをタスクとして実行する場合は、タスクグラフ内のタスク間で次のデータ共有オプションを使用できます。

  • 先行タスク戻り値メカニズム: タスクグラフでは、タスクの出力を後続の依存タスクへの入力として渡すことができます。 Snowflakeは、ファイルパス、ステータス文字列、その他のID値などの小さなメタデータを渡す場合にこのオプションを推奨します。詳細については、 タスク間で戻り値を渡す をご参照ください。

    SQLタスクの場合と同様に、タスクとして実行されているジョブは、先行タスクの戻り値を取得できます。同様に、ジョブは後続のタスクに戻り値を提供することもできます。

  • 一般的な永続ストレージメカニズム: ファイルなどの大きなデータセットを転送する場合、Snowflakeは、Snowflakeステージやテーブルなどの永続ストレージにデータを永続化し、タスクグラフ内のタスクがストレージにアクセスできるようにすることを推奨します。

注釈

セッションはジョブサービス間では共有されません。したがって、仮テーブルやセッション変数はセッションスコープのオブジェクトであるため、データを共有する方法としては使用できません。

例については、 チュートリアル:SnowflakeタスクとしてのSnowflake Container Servicesジョブの実行 をご参照ください。