パイプラインでデフォルト パブリッシング モードを有効にする
この記事では、 LIVE
仮想スキーマ (レガシ発行モード) を使用するパイプラインをデフォルト発行モードに移行する方法について説明します。
デフォルトの公開モードでは、1 つのパイプラインで複数のカタログとスキーマに書き込むことができ、パイプライン内のテーブルとビューを操作するための簡略化された構文が含まれています。 従来の公開モードは非推奨と見なされ、 Databricks ではすべてのパイプラインをデフォルトの公開モードに移行することをお勧めします。
移行はパイプラインのメタデータに影響しますが、データセットの読み取り、移動、書き込みは行われません。
パイプラインでレガシ発行モードが使用されているかどうかを確認する方法
従来の公開モード パイプラインは、Lakeflow宣言型パイプライン設定 UI の[概要] フィールドに示されます。また、パイプラインの JSON 仕様で target
フィールドが設定されている場合は、パイプラインが従来の公開モードを使用していることを確認することもできます。
デフォルトの公開モードへの移行に関する考慮事項
移行中に留意すると便利な注意事項は次のとおりです。
- パイプラインをデフォルト発行モードに移行した後は、
LIVE
仮想スキーマを使用して移行し直すことはできません。 - 移行のためにパイプラインを準備するには、従来の公開モードとデフォルトの公開モード間の構文の変更に対処する必要があります。 ほとんどのパイプラインでは、変更は必要ありません。詳細については、「 移行用のパイプラインの準備」を参照してください。
- 移行はメタデータにのみ影響します。データセットの読み取り、移動、または書き込みは行われません。
- デフォルトの公開モードでは、マテリアライズドビューとストリーミングテーブルは、作成後にスキーマ間で移動できません。
- デフォルトの公開モードには Databricks CLI バージョンv0.230.0以降が必要です。 「Databricks CLI のインストールまたは更新」を参照してください。
デフォルトの公開モードに移行する
次の手順を使用して、デフォルトの公開モードに移行します。
-
ワークスペースの左側のサイドバーから [ジョブとパイプライン ] をクリックします。
-
リストで移行するパイプラインの名前をクリックします。
-
更新を停止し、現在実行中のパイプラインを停止させます。
移行が完了する前の過去 60 日以内に少なくとも 1 つの更新プログラムが実行されている必要があります。パイプラインがトリガーされた場合、またはすでに停止する、手動で実行します 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;
このバージョンは、どちらの公開モードでも機能します。
警告とエラー
従来の公開モードでの一部の警告は、デフォルトの公開モードのエラーに置き換えられました。
自己参照 自己参照 (または循環参照) は、デフォルトの公開モードでは許可されません (また、従来の公開モードでは未定義の結果がありました)。例えば:
CREATE OR REPLACE MATERIALIZED VIEW table1 AS SELECT * FROM target_catalog.target_schema.table1;
従来の公開モードでは警告が生成されます (結果が未定義になります)。デフォルトの公開モードでは、エラーが発生します。
マルチパート名 デフォルトの公開モード (マルチパート名) では、名前にピリオドを使用することはできません。たとえば、次の Python コードはレガシ モードでは有効ですが、デフォルト モードでは有効ではありません。
@dlt.view(name=”a.b.c”)
def transform():
return …
移行する前に、ビューの名前をピリオド文字を含まない名前に変更します。
トラブルシューティング
次の表では、従来の公開モードから移行するときに発生する可能性のあるエラーについて説明します。
エラー | 説明 |
---|---|
| Hive metastore パイプラインでは移行はサポートされていません。別の方法として、移行前に Hive metastore から Unity Catalog にパイプラインをクローニングできる場合があります。 「Unity CatalogパイプラインのクローニングによるHive metastore パイプラインの作成 」を参照してください。 |
| このエラーは、 |
| このエラーは、パイプライン コードがデフォルトの公開モードと完全に互換性がないことを示しています。移行のためのパイプラインの準備を参照してください。 |