DLT パイプラインで更新を実行する
この記事では、パイプラインの更新について説明し、更新をトリガーする方法について詳しく説明します。
パイプラインの更新とは
パイプラインを作成し、実行する準備ができたら、 更新 を開始します。 パイプラインの更新では、次の処理が行われます。
- 正しい構成でクラスターを開始します。
- 定義されたすべてのテーブルとビューを検出し、無効な列名、依存関係の欠落、構文エラーなどの分析エラーをチェックします。
- 使用可能な最新のデータでテーブルとビューを作成または更新します。
validate update を使用すると、テーブルが作成または更新されるのを待たずに、パイプラインのソースコードに問題がないか確認できます。この機能は、パイプラインの開発またはテスト時に、テーブル名や列名の誤りなど、パイプラインのエラーをすばやく見つけて修正できるので便利です。
パイプラインの更新はどのようにトリガーされますか?
次のいずれかのオプションを使用して、パイプラインの更新を開始します。
更新トリガー | 詳細 |
---|---|
手動 | パイプラインの更新は、パイプライン UI、パイプライン リスト、またはパイプラインにアタッチされたノートブックから手動でトリガーできます。 「パイプライン更新を手動でトリガーする」および「ノートブックで DLT パイプラインを開発およびデバッグする」を参照してください。 |
スケジュール | パイプラインの更新は、ジョブを使用してスケジュールできます。 ジョブの DLT パイプライン タスクを参照してください。 |
プログラム | サードパーティのツール、 APIs、および CLI を使用して、プログラムで更新をトリガーできます。 「ワークフローでの DLT パイプラインの実行」および「パイプライン パイプライン 」を参照してくださいAPI。 |
パイプラインの更新を手動でトリガーする
次のいずれかのオプションを使用して、パイプラインの更新を手動でトリガーします。
- パイプラインの詳細ページの
ボタンをクリックします。
- パイプラインの一覧から、
アクション 列をクリックします 。
手動でトリガーされたパイプライン更新のデフォルトの動作は、パイプラインで定義されているすべてのデータセットを更新することです。
パイプライン更新セマンティクス
次の表では、デフォルトの更新と完全更新のマテリアライズドビューとストリーミングテーブルの動作について説明します。
アップデートのタイプ | マテリアライズドビューのセマンティクス | ストリーミングテーブル semantics |
---|---|---|
更新 (デフォルト) | 結果を更新して、定義クエリの現在の結果を反映します。 | ストリーミングテーブルとフローで定義されたロジックを通じて、新しいレコードを処理します。 |
フルリフレッシュ | 結果を更新して、定義クエリの現在の結果を反映します。 | ストリーミングテーブルからデータをクリアし、フローから状態情報 (checkpoints) をクリアし、データソースからすべてのレコードを再処理します。 |
デフォルトでは、パイプライン内のすべてのマテリアライズドビューとストリーミングテーブルは、更新のたびに更新されます。 オプションで、次の機能を使用して更新からテーブルを省略できます。
- 更新するテーブルの選択 : この UI を使用して、更新を実行する前にマテリアライズドビュー と ストリーミングテーブルを追加または削除します。 「選択したテーブルのパイプライン更新を開始する」を参照してください。
- 失敗したテーブルの更新 : 失敗したマテリアライズドビューとストリーミングテーブル (ダウンストリームの依存関係を含む) の更新を開始します。 「失敗したテーブルのパイプライン更新を開始する」を参照してください。
これらの機能はどちらも、デフォルトの更新セマンティクスまたは完全更新をサポートしています。 オプションで、[ Select tables for update ] ダイアログを使用して、失敗したテーブルの更新を実行するときに追加のテーブルを除外できます。
フルアップデートを使うべきですか?
Databricks では、必要な場合にのみフル更新を実行することをお勧めします。 完全更新では、データセットを定義するロジックを通じて、指定されたデータソースのすべてのレコードが常に再処理されます。 完全更新を完了するための時間とリソースは、ソース データのサイズと相関しています。
マテリアライズドビュー は、デフォルト更新と full 更新のどちらを使用しても同じ結果を返します。 ストリーミングテーブルで完全更新を使用すると、すべての状態処理とチェックポイント情報がリセットされ、入力データが使用できなくなった場合にレコードがドロップされる可能性があります。
Databricks は、入力データソースにテーブルまたはビューの目的の状態を再作成するために必要なデータが含まれている場合にのみ、完全な更新を推奨します。 入力ソース データが使用できなくなった次のシナリオと、完全更新を実行した結果について考えてみます。
データソース | 入力データが存在しない理由 | 全更新の結果 |
---|---|---|
Kafka | 短い保持しきい値 | Kafka ソースに存在しなくなったレコードは、ターゲットテーブルから削除されます。 |
オブジェクトストレージ内のファイル | ライフサイクルポリシー | ソース・ディレクトリーに存在しなくなったデータ・ファイルは、ターゲット・テーブルからドロップされます。 |
テーブル内のレコード | コンプライアンスのために削除されました | ソース テーブルに存在するレコードのみが処理されます。 |
テーブルまたはビューで完全更新が実行されないようにするには、テーブル・プロパティの pipelines.reset.allowed
を false
に設定します。 DLT テーブルのプロパティを参照してください。また、追加フローを使用して、完全な更新を必要とせずに既存のストリーミングテーブルにデータを追加することもできます。
選択したテーブルのパイプライン更新を開始する
必要に応じて、パイプライン内の選択したテーブルのデータのみを再処理できます。 たとえば、開発中に 1 つのテーブルのみを変更してテスト時間を短縮したい場合や、パイプラインの更新が失敗し、 失敗したテーブルのみを更新する場合などです。
選択的更新は、トリガーされたパイプラインのみで使用できます。
選択したテーブルのみを更新する更新を開始するには、 パイプラインの詳細 ページで:
-
更新するテーブルの選択 をクリックします。 更新するテーブルの選択 ダイアログが表示されます。
[ 更新するテーブルを選択 ] ボタンが表示されない場合は、[ パイプラインの詳細 ] ページに最新の更新が表示され、更新が完了していることを確認します。 更新が失敗したなどの理由で、最新の更新の DAG が表示されない場合、[ 更新用のテーブルの選択 ] ボタンは表示されません。
-
更新するテーブルを選択するには、各テーブルをクリックします。 選択したテーブルが強調表示され、ラベルが付けられます。 更新からテーブルを削除するには、テーブルをもう一度クリックします。
-
選択範囲の更新 をクリックします。
選択範囲の更新 ボタンには、選択したテーブルの数が括弧内に表示されます。
選択したテーブルに既に取り込まれたデータを再処理するには、[ 選択の更新] ボタンの横にある [] をクリックし、[ 選択の完全更新] をクリックします。
失敗したテーブルのパイプライン更新を開始する
パイプライン グラフの 1 つ以上のテーブルのエラーが原因でパイプラインの更新が失敗した場合は、失敗したテーブルとダウンストリームの依存関係のみの更新を開始できます。
除外されたテーブルは、障害が発生したテーブルに依存している場合でも、更新されません。
失敗したテーブルを更新するには、 パイプラインの詳細 ページで、 失敗したテーブルの更新 をクリックします。
選択した失敗したテーブルのみを更新するには:
-
「更新に失敗しました 」 ボタンの横にある「」をクリックし、「 更新用のテーブルを選択」 をクリックします。 [ 更新するテーブルの選択 ] ダイアログが表示されます。
-
更新するテーブルを選択するには、各テーブルをクリックします。 選択したテーブルが強調表示され、ラベルが付けられます。 更新からテーブルを削除するには、テーブルをもう一度クリックします。
-
選択範囲の更新 をクリックします。
選択範囲の更新 ボタンには、選択したテーブルの数が括弧内に表示されます。
選択したテーブルに既に取り込まれたデータを再処理するには、[ 選択の更新] ボタンの横にある [] をクリックし、[ 選択の完全更新] をクリックします。
テーブルの更新を待たずにパイプラインにエラーがないか確認する
プレビュー
DLT Validate
の更新機能は パブリック プレビュー段階です。
完全な更新を実行せずにパイプラインのソース コードが有効かどうかを確認するには、 検証 を使用します。 Validate
更新では、パイプラインで定義されているデータセットとフローの定義が解決されますが、データセットの具体化や発行は行われません。検証中に見つかったエラー (テーブル名や列名が正しくないなど) は、UI で報告されます。
Validate
更新を実行するには、パイプラインの詳細ページで[開始] の横にある [] をクリックし、[ 検証] をクリックします。
Validate
の更新が完了すると、イベント ログにはValidate
の更新に関連するイベントのみが表示され、DAG にメトリクスは表示されません。エラーが見つかった場合は、イベント ログに詳細が表示されます。
最新の Validate
更新プログラムの結果のみが表示されます。 Validate
更新プログラムが最後に実行された更新プログラムであった場合は、更新履歴でそれを選択して結果を確認できます。Validate
更新後に別の更新を実行すると、結果は UI で使用できなくなります。
開発モードと本番運用モード
開発モードと本番運用モードを切り替えることで、パイプラインの実行を最適化できます。 パイプライン UI の ボタンを使用して、これら 2 つのモードを切り替えます。 デフォルトでは、パイプラインは開発モードで実行されます。
パイプラインを開発モードで実行すると、DLT システムは次の処理を行います。
- クラスタリングを再利用して、再起動のオーバーヘッドを回避します。 By デフォルト, 開発モードが有効な場合、クラスタリング は 2 時間実行されます。 これは、DLT パイプラインのコンピュートの設定の
pipelines.clusterShutdown.delay
設定で変更できます。 - パイプラインの再試行を無効にして、エラーをすぐに検出して修正できるようにします。
本番運用モードでは、DLTシステムは以下の処理を行います。
- メモリ リークや古い資格情報など、特定の回復可能なエラーのクラスターを再開します。
- クラスターの開始の失敗など、特定のエラーが発生した場合に実行を再試行します。
開発モードと本番モードの切り替えは、クラスターとパイプラインの実行動作のみを制御します。 テーブルを発行するためのカタログ内のストレージの場所とターゲット スキーマは、パイプライン設定の一部として構成する必要があり、モードを切り替えても影響を受けません。