トリガー パイプライン モードと継続的パイプライン モード
この記事では、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"
}
}