トリガー パイプライン モードと継続的パイプライン モード

この記事では、Delta Live Tables のトリガー パイプライン モードと継続的パイプライン モードの操作セマンティクスについて説明します。

パイプライン モードは、コンピュートであるテーブルのタイプに依存しません。 マテリアライズドビューとストリーミングテーブルはどちらも、どちらのパイプラインモードでも更新できます。

トリガーと連続を切り替えるには、パイプラインの作成または編集中に、パイプライン設定の パイプライン モード オプションを使用します。 「Delta Live Tables パイプラインの構成」を参照してください。

注:

Databricks SQL で定義されているマテリアライズド ビューとストリーミング テーブルの更新操作は、常にトリガー パイプライン モードを使用して実行されます。

トリガー パイプライン モードとは何ですか?

パイプラインが トリガー モードを使用している場合、システムはすべてのテーブルまたは選択したテーブルを正常に更新した後、処理を停止し、更新の開始時に使用可能なデータに基づいて更新の各テーブルが更新されます。

連続パイプラインモードとは何ですか?

パイプラインが 連続 実行を使用する場合、 Delta Live Tables はデータソースに到着した新しいデータを処理して、パイプライン全体のテーブルを最新の状態に保ちます。

連続実行モードでの不要な処理を避けるために、パイプラインは依存 Delta テーブルを自動的に監視し、それらの依存テーブルの内容が変更された場合にのみ更新を実行します。

データパイプラインモードを選択する

次の表は、トリガー パイプライン モードと継続的パイプライン モードの違いを示しています。

主な質問

トリガー

連続

更新はいつ停止しますか?

完了すると自動的に。

手動で停止するまで連続して実行されます。

どのようなデータが処理されますか?

更新の開始時に使用可能なデータ。

すべてのデータは、設定されたソースに到着します。

これはどのようなデータの更新頻度の要件に最適ですか?

データの更新は、10 分ごと、毎時、または毎日実行されます。

データの更新は、10 秒ごとから数分ごとに行う必要があります。

トリガーされたパイプラインは、クラスターがパイプラインを更新するのに十分な時間だけ実行されるため、リソースの消費と費用を削減できます。 ただし、パイプラインがトリガーされるまで、新しいデータは処理されません。 Continuous パイプラインには Always-稼働中のクラスターが必要ですが、これはより高価ですが、処理の待ち時間が短縮されます。

連続パイプラインのトリガー間隔を設定する

パイプラインを連続モードに設定する場合は、トリガー間隔を設定して、パイプラインが各フローの更新を開始する頻度を制御できます。

pipelines.trigger.interval を使用して、フロー、テーブル、またはパイプライン全体を更新するトリガー間隔を制御できます。トリガーされたパイプラインは各テーブルを 1 回処理するため、 pipelines.trigger.interval は連続パイプラインでのみ使用されます。

Databricks では、ストリーミング クエリとバッチ クエリのデフォルトが異なるため、個々のテーブルにpipelines.trigger.intervalを設定することをお勧めします。 パイプラインに値を設定するのは、処理でパイプライン グラフ全体の更新を制御する必要がある場合のみです。

テーブルに pipelines.trigger.interval を設定するには、Python の spark_conf API または SQL の SET を使用します。

@dlt.table(
  spark_conf={"pipelines.trigger.interval" : "10 seconds"}
)
def <function-name>():
    return (<query>)
SET pipelines.trigger.interval=10 seconds;

CREATE OR REFRESH MATERIALIZED VIEW TABLE_NAME
AS SELECT ...

パイプラインに pipelines.trigger.interval を設定するには、パイプライン設定の configuration オブジェクトにパイプラインを追加します。

{
  "configuration": {
    "pipelines.trigger.interval": "10 seconds"
  }
}