パイプラインでデフォルトの公開モードを有効にする
この記事では、 LIVE
仮想スキーマ (従来の公開モード) を使用するパイプラインを仮公開モードに移行する方法について説明します。
デフォルトの公開モードでは、単一のパイプラインで複数のカタログとスキーマに書き込むことができ、パイプライン内のテーブルとビューを操作するための簡略化された構文が含まれます。従来の公開モードは非推奨であると考えられているため、 Databricksすべてのパイプラインを確実公開モードに移行することをお勧めします。
移行はパイプラインのメタデータに影響しますが、データセットの読み取り、移動、書き込みは行われません。
パイプラインが従来の公開モードを使用しているかどうかを確認する方法
従来の公開モード パイプラインは、Lakeflow宣言型パイプライン設定 UI の[概要] フィールドに示されます。また、パイプラインの JSON 仕様で target
フィールドが設定されている場合は、パイプラインが従来の公開モードを使用していることを確認することもできます。
デフォルトの公開モードへの移行に関する考慮事項
移行中に留意しておくと役立つ注意事項は次のとおりです。
- パイプラインをデフォルトの公開モードに移行した後は、
LIVE
仮想スキーマを使用して再度移行することはできません。 - 従来の公開モードとデフォルトの公開モード間の構文の変更に対処して、移行のためにパイプラインを準備する必要がある場合があります。ほとんどのパイプラインでは変更は必要ありません。詳細については、 「移行のためのパイプラインの準備」を参照してください。
- 移行はメタデータにのみ影響します。データセットの読み取り、移動、書き込みは行いません。
- 安心公開モードでは、マテリアライズドビューとストリーミングテーブルを作成後にスキーマ間で移動することはできません。
- デフォルトの公開モードでは、Databricks CLI バージョン v0.230.0 以上が必要です。「Databricks CLI をインストールまたは更新する」を参照してください。
デフォルトの公開モードに移行する
次のステップを使用して、当然公開モードに移行します。
-
ワークスペースの左側のサイドバーから 「ジョブとパイプライン」 をクリックします。
-
リスト内で移行するパイプラインの名前をクリックします。
-
更新を停止し、現在実行中のパイプラインを停止します。
移行を完了する前の 60 日以内に少なくとも 1 回の更新が実行されている必要があります。パイプラインがトリガーされた場合、またはすでに停止している場合は、単一の更新を手動で実行します。 パイプラインが連続している場合は、パイプラインが
RUNNING
状態になる (またはすでに 状態にある) ことを確認してから停止します。 -
必要に応じて、移行する必要がある可能性のあるコードを準備します。
通常、デフォルトの公開モードは従来の公開モードと下位互換性がありますが、アップグレード時にパイプライン コードが正しく実行されるように、移行に向けてパイプラインを適切に準備してください。ほとんどのパイプラインは変更する必要はありません。
-
パイプライン 設定 に構成を追加します:
pipelines.enableDPMForExistingPipeline
、true
に設定します。 -
手動更新を開始し、更新を完了させます。
-
必要に応じて、パイプラインの [設定] で、
pipelines.enableDPMForExistingPipeline
のパイプラインの構成を削除します。この設定は移行に使用され、移行が完了した後は必要ありません。 -
必要に応じて、スケジュールを更新し、パイプラインの更新を有効にします。
パイプラインでデフォルトの公開モードが有効になりました。問題が発生した場合は、次のセクションを参照してトラブルシューティングを行ってください。問題が解決しない場合は、Databricks アカウント マネージャーにお問い合わせください。
移行のためのパイプラインの準備
デフォルトの公開モードは通常、従来の公開モードと下位互換性がありますが、一部のパイプラインは実行するために変更する必要がある場合があります。次の注意事項は、パイプラインの移行の準備に役立ちます。
LIVE
キーワード
従来の公開モードのLIVE
キーワードは、パイプラインのデフォルトでオブジェクトのカタログとスキーマを修飾します。デフォルトの公開モードでは、テーブルまたはビューを修飾するためにLIVE
キーワードが使用されなくなりました。LIVE
キーワードは無視され、パイプラインのデフォルトのカタログとスキーマに置き換えられます。通常、パイプラインに後でUSE CATALOG
またはUSE SCHEMA
コマンドを追加しない限り、従来の公開モードのLIVE
キーワードと同じデフォルトのカタログとスキーマが使用されます。
従来の公開モードでは、 LIVE
キーワードのない部分的に修飾されたテーブルおよびビュー参照 ( table1
など) では、Spark のデフォルトが使用されます。無事公開モードでは、部分的に修飾された参照はパイプラインを確実に使用します。 Spark のデフォルトとパイプラインが異なる場合は、移行する前に、部分的に修飾されたテーブルまたはビューの名前を完全に修飾する必要があります。
移行後、コードからLIVE
キーワードを削除できます。必要に応じて、 LIVE
キーワードを完全修飾テーブル名またはビュー名に置き換えることができます。
LIVE
キーワードを使用した列参照
デフォルトの公開モードでは、 LIVE
キーワードを使用して列を定義することはできません。たとえば、次のコード:
CREATE OR REPLACE MATERIALIZED VIEW target AS SELECT LIVE.source.id FROM LIVE.source;
移行前に、次のように置き換える必要があります。
CREATE OR REPLACE MATERIALIZED VIEW target AS SELECT source.id FROM LIVE.source;
このバージョンはどちらの公開モードでも動作します。
flow_progress
イベントの変更
パイプラインを移行すると、イベント ログ内のflow_progress
イベントのデータセット名が変更されます。このパイプラインのイベント ログにクエリがある場合は、クエリを更新する必要がある可能性があります。
従来の公開モードでは、データセット名はtable
名前です。デフォルトの公開モードでは、データセット名は完全修飾catalog.schema.table
名になります。
イベント ログの使用方法の詳細については、 LakeFlow宣言型パイプライン イベント ログ」を参照してください。
警告とエラー
従来の公開モードの一部の警告は、デフォルトの公開モードのエラーに置き換えられました。
自己参照 自己参照 (または循環参照) は、デフォルトの公開モードでは許可されません (従来の公開モードでは未定義の結果になります)。例えば:
CREATE OR REPLACE MATERIALIZED VIEW table1 AS SELECT * FROM target_catalog.target_schema.table1;
従来の公開モードでは警告が生成されます (結果は未定義になります)。デフォルトの公開モードでは、エラーが発生します。
マルチパート名 デフォルトの公開モード (マルチパート名) では、名前にピリオドを使用することはできません。たとえば、次の Python コードはレガシー モードでは有効ですが、デフォルト モードでは有効ではありません。
@dlt.view(name=”a.b.c”)
def transform():
return …
移行する前に、テーブルの名前をピリオド文字を含まない名前に変更します。
この例では、古い構文@dlt.view
も使用されています。Databricks では、パイプラインに@dp.temporary_view()
を使用することをお勧めします。詳細については、 LakeFlow宣言型パイプラインPython言語リファレンスを参照してください。
トラブルシューティング
次の表では、従来の公開モードから移行するときに発生する可能性のあるエラーについて説明します。
エラー | 説明 |
---|---|
| Hive metastoreパイプラインの移行はサポートされていません。 代わりに、移行前にHive metastoreからUnity Catalogにパイプラインのクローンを作成できる場合があります。 Hive metastoreラインを複製してUnity Catalogパイプラインを作成する」を参照してください。 |
| このエラーは、 |
| このエラーは、パイプライン コードがデフォルトの公開モードと完全に互換性がないことを示しています。「移行のためのパイプラインの準備」を参照してください。 |