トリガー パイプライン モードと連続パイプライン モード
TriggeredおよびContinuousパイプラインモードは、パイプラインがデータを処理する方法を制御します。Triggeredモードは利用可能なデータを更新して停止し、Continuousモードは新しいデータが到着するとテーブルを常に最新の状態に保ちます。ミリ秒単位のレイテンシーが必要なワークロードについては、LakeFlow Pipelinesでリアルタイムモードを使用するを参照してください。
パイプライン モードは、コンピュートされているテーブルの種類には依存しません。 マテリアライズドビューとストリーミングテーブルは、どちらのパイプラインモードでも更新できます。
スタンドアロンのマテリアライズドビューとストリーミングテーブルの更新操作は、常にトリガーパイプラインモードを使用して実行されます。
トリガーされたパイプライン モードとは何ですか?
パイプラインで**トリガー**モードが使用されている場合、システムは更新開始時に利用可能だったデータに基づいてすべてのテーブルを更新した後、停止します。
連続パイプラインモードとは何ですか?
パイプラインが**連続**実行を使用する場合、データソースに新しいデータが到着すると、それを処理し、パイプライン全体のテーブルを最新の状態に保ちます。
継続的な実行モードでの不要な処理を回避するために、パイプラインは依存する Delta テーブルを自動的に監視し、依存テーブルの内容が変更された場合にのみ更新を実行します。
データパイプラインモードを選択する
次の表は、トリガー パイプライン モードと連続パイプライン モードの違いを示しています。
重要な質問 | トリガー | 連続 |
|---|---|---|
アップデートはいつ停止しますか? | 完了時に自動的に実行されます。 | 手動で停止するまで継続的に実行されます。 |
どのようなデータが処理されますか? | アップデート開始時に利用可能なデータ。 | 構成されたソースに到着したすべてのデータ。 |
これはどのようなデータの鮮度要件に最適ですか? | データの更新は 10 分ごと、1 時間ごと、または毎日実行されます。 | データの更新は 10 秒から数分ごとに行う必要があります。 |
トリガーされたパイプラインは、クラスターがパイプラインを更新するのに十分な時間だけ実行されるため、リソースの消費と費用を削減できます。ただし、パイプラインがトリガーされるまで、新しいデータは処理されません。連続パイプラインには常時稼働中のクラスターが必要ですが、これはより高価ですが、処理の待ち時間が短縮されます。
連続ジョブを使用して連続パイプラインをランする
Databricks では、 パイプライン モード の値を継続的に設定するのではなく、 継続的ジョブ を使用して継続的パイプラインを実行することを推奨しています。継続的ジョブがパイプラインをオーケストレーションする場合、ジョブはパイプラインの実行ライフサイクルを管理し、パイプラインの組み込みの継続的モードではサポートされていない、Standard モードなどのServerless パフォーマンス モード を有効にします。
ジョブオーケストレーションは、LakeFlow Pipelinesの実行モードのみを制御します。スタンドアロンのマテリアライズドビューとストリーミングテーブルは、ジョブオーケストレーションに関係なく、常にTriggerモードで実行されます。
ジョブがパイプラインをオーケストレーションする場合、ジョブが実行モードを決定し、パイプラインの パイプライン モード 設定よりも優先されます。継続的ジョブは、パイプラインの パイプライン モード がTriggerに設定されていてもパイプラインを継続的に実行します。また、Triggerまたはスケジュールされたジョブは、パイプラインの パイプライン モード が継続的に設定されていても、パイプラインを単一の更新として実行します。
ジョブはパイプライン モード設定を上書きするため、パイプラインを継続的ジョブにラップする場合は、パイプラインの パイプライン モード をTrigger(default)に設定してください。これにより、パイプラインがジョブの外部で実行された場合に予期しない動作が発生するのを防ぐことができます。
パイプラインの連続ジョブを構成する方法については、連続ジョブを使用してパイプラインを継続的に実行するを参照してください。
組み込みの継続的モードでパイプラインを実行する
パイプラインの組み込みの継続的設定は削除されませんが、Databricks では、新しいパイプラインに対しては継続的ジョブ パターンを使用することを推奨しており、組み込み設定の使用は推奨していません。Triggerと継続的を切り替えるには、パイプラインの作成または編集中に、パイプライン設定の パイプライン モード オプションを使用します。「パイプラインの構成」を参照してください。
連続パイプラインのトリガー間隔を設定する
パイプラインを連続モード用に構成する際、Trigger間隔を設定して、パイプラインが各フローの更新を起動する頻度を制御できます。トリガー間隔は、パイプラインが独自の パイプライン モード 設定を通じて継続的モードで実行されるか、継続的ジョブを通じて実行されるかに関係なく適用されるパイプライン構成です。
pipelines.trigger.interval を使用して、テーブルまたはパイプライン全体を更新するフローのTrigger間隔を制御できます。トリガーパイプラインは各テーブルを一度だけ処理するため、pipelines.trigger.interval は継続的パイプラインでのみ使用されます。
ストリーミング クエリとバッチ クエリではデフォルトが異なるため、 Databricks個々のテーブルにpipelines.trigger.interval設定することをお勧めします。 処理でパイプライン グラフ全体の更新を制御する必要がある場合のみ、パイプラインに値を設定します。
Python ではspark_conf 、SQL ではSETを使用してテーブルにpipelines.trigger.interval設定します。
@dp.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"
}
}