パイプラインでデフォルト パブリッシング モードを有効にする
プレビュー
この機能は パブリック プレビュー段階です。
この記事では、 LIVE
仮想スキーマ (レガシ発行モード) を使用するパイプラインをデフォルト発行モードに移行する方法について説明します。
デフォルトの公開モードでは、1 つのパイプラインで複数のカタログとスキーマに書き込むことができ、パイプライン内のテーブルとビューを操作するための簡略化された構文が含まれています。 従来の公開モードは非推奨と見なされ、 Databricks ではすべてのパイプラインをデフォルトの公開モードに移行することをお勧めします。
移行はパイプラインのメタデータに影響しますが、データセットの読み取り、移動、書き込みは行われません。
パイプラインでレガシ発行モードが使用されているかどうかを確認する方法
従来の公開モード パイプラインは、Lakeflow宣言型パイプライン設定 UI の[概要] フィールドに示されます。また、パイプラインの JSON 仕様で target
フィールドが設定されている場合は、パイプラインが従来の公開モードを使用していることを確認することもできます。
デフォルトの公開モードへの移行に関する考慮事項
移行中に留意すると便利な注意事項は次のとおりです。
- パイプラインをデフォルト発行モードに移行した後は、
LIVE
仮想スキーマを使用して移行し直すことはできません。 - 移行のためにパイプラインを準備するには、従来の公開モードとデフォルトの公開モード間の構文の変更に対処する必要があります。 ほとんどのパイプラインでは、変更は必要ありません。詳細については、「 移行用のパイプラインの準備」を参照してください。
- 移行はメタデータにのみ影響します。データセットの読み取り、移動、または書き込みは行われません。
- デフォルトの公開モードでは、マテリアライズドビューとストリーミングテーブルは、作成後にスキーマ間で移動できません。
- デフォルトの公開モードには Databricks CLI バージョンv0.230.0以降が必要です。 「Databricks CLI のインストールまたは更新」を参照してください。
デフォルトの公開モードに移行する
次の手順を使用して、デフォルトの公開モードに移行します。
-
移行するパイプラインを Databricks UI で開きます。
-
更新を停止し、現在実行中のパイプラインを停止させます。
移行を完了する前に、少なくとも 1 つの更新を実行する必要があります。パイプラインがトリガーされた場合、または既に停止していた場合は、1 つの更新を手動で実行します。 パイプラインが連続している場合は、パイプラインが
RUNNING
状態になった (または既に状態になっている) ことを確認してから、停止することを確認します。 -
必要に応じて、移行が必要なコードを準備します。
デフォルトのパブリッシングモードは、通常、レガシパブリッシングモードと下位互換性がありますが、アップグレード時にパイプラインコードが正しく実行されるように、 移行のためにパイプラインを適切に準備 してください。ほとんどのパイプラインでは、変更は必要ありません。
-
パイプラインに設定を追加します:
pipelines.enableDPMForExistingPipeline
true
に設定します。 -
手動更新を開始し、更新が完了するまで待ちます。
-
パイプライン設定の JSON ページに移動します。
target
フィールドを見つけて、schema
に置き換えます(同じ値を維持します)。設定には、次のようなJSONを含める必要があります。JSON...
"catalog": "main",
"configuration": {
"pipelines.setMigrationHints": "true",
"pipelines.enableDPMForExistingPipeline": "true"
},
"schema": "default",
"data_sampling": "false",
... -
JSON を保存します 。
-
パイプライン の 設定 で、
pipelines.setMigrationHints
と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 パイプラインの作成 」を参照してください。 |
| このエラーは、 |
| このエラーは、パイプライン コードがデフォルトの公開モードと完全に互換性がないことを示しています。移行のためのパイプラインの準備を参照してください。 |