メインコンテンツまでスキップ

パイプラインでデフォルト パブリッシング モードを有効にする

備考

プレビュー

この機能は パブリック プレビュー段階です。

この記事では、 LIVE 仮想スキーマ (レガシ発行モード) を使用するパイプラインをデフォルト発行モードに移行する方法について説明します。

デフォルトの公開モードでは、1 つのパイプラインで複数のカタログとスキーマに書き込むことができ、パイプライン内のテーブルとビューを操作するための簡略化された構文が含まれています。 従来の公開モードは非推奨と見なされ、 Databricks ではすべてのパイプラインをデフォルトの公開モードに移行することをお勧めします。

移行はパイプラインのメタデータに影響しますが、データセットの読み取り、移動、書き込みは行われません。

パイプラインでレガシ発行モードが使用されているかどうかを確認する方法

従来の公開モード パイプラインは、Lakeflow宣言型パイプライン設定 UI の[概要] フィールドに示されます。また、パイプラインの JSON 仕様で target フィールドが設定されている場合は、パイプラインが従来の公開モードを使用していることを確認することもできます。

デフォルトの公開モードへの移行に関する考慮事項

移行中に留意すると便利な注意事項は次のとおりです。

  • パイプラインをデフォルト発行モードに移行した後は、 LIVE 仮想スキーマを使用して移行し直すことはできません。
  • 移行のためにパイプラインを準備するには、従来の公開モードとデフォルトの公開モード間の構文の変更に対処する必要があります。 ほとんどのパイプラインでは、変更は必要ありません。詳細については、「 移行用のパイプラインの準備」を参照してください。
  • 移行はメタデータにのみ影響します。データセットの読み取り、移動、または書き込みは行われません。
  • デフォルトの公開モードでは、マテリアライズドビューとストリーミングテーブルは、作成後にスキーマ間で移動できません。
  • デフォルトの公開モードには Databricks CLI バージョンv0.230.0以降が必要です。 「Databricks CLI のインストールまたは更新」を参照してください。

デフォルトの公開モードに移行する

次の手順を使用して、デフォルトの公開モードに移行します。

  1. 移行するパイプラインを Databricks UI で開きます。

  2. 更新を停止し、現在実行中のパイプラインを停止させます。

    移行を完了する前に、少なくとも 1 つの更新を実行する必要があります。パイプラインがトリガーされた場合、または既に停止していた場合は、1 つの更新を手動で実行します。 パイプラインが連続している場合は、パイプラインが RUNNING 状態になった (または既に状態になっている) ことを確認してから、停止することを確認します。

  3. 必要に応じて、移行が必要なコードを準備します。

    デフォルトのパブリッシングモードは、通常、レガシパブリッシングモードと下位互換性がありますが、アップグレード時にパイプラインコードが正しく実行されるように、 移行のためにパイプラインを適切に準備 してください。ほとんどのパイプラインでは、変更は必要ありません。

  4. パイプラインに設定を追加します: pipelines.enableDPMForExistingPipeline trueに設定します。

  5. 手動更新を開始し、更新が完了するまで待ちます。

  6. パイプライン設定の JSON ページに移動します。targetフィールドを見つけて、schemaに置き換えます(同じ値を維持します)。設定には、次のようなJSONを含める必要があります。

    JSON
    ...
    "catalog": "main",
    "configuration": {
    "pipelines.setMigrationHints": "true",
    "pipelines.enableDPMForExistingPipeline": "true"
    },
    "schema": "default",
    "data_sampling": "false",
    ...
  7. JSON を保存します

  8. パイプライン の 設定 で、 pipelines.setMigrationHintspipelines.enableDPMForExistingPipelineのパイプライン設定を削除します。

  9. パイプラインの更新を移行前と同様に有効にします。

デフォルトの公開モードがパイプラインで有効になりました。問題が発生した場合は、次のセクションを参照してトラブルシューティングに役立ててください。問題が解決しない場合は、Databricks アカウント マネージャーにお問い合わせください。

移行のためのパイプラインの準備

デフォルト パブリッシング モードは、通常、レガシ パブリッシング モードと下位互換性がありますが、一部のパイプラインは実行するために変更が必要な場合があります。 次の注意事項は、移行のためにパイプラインを準備するのに役立ちます。

LIVEキーワード

レガシーパブリッシングモードの LIVE キーワードは、オブジェクトのカタログとスキーマをパイプライン デフォルトで修飾します。 デフォルトの公開モードでは、テーブルまたはビューの修飾に LIVE キーワードが使用されなくなりました。 LIVE キーワードは無視され、パイプラインのデフォルト カタログとスキーマに置き換えられます。通常、これは、後で USE CATALOG または USE SCHEMA コマンドをパイプラインに追加しない限り、従来の発行モードの LIVE キーワードと同じデフォルト カタログとスキーマを使用します。

従来の公開モードでは、 LIVE キーワードを含まない部分的に修飾されたテーブルおよびビュー参照 ( table1など) は Spark のデフォルトを使用します。デフォルト パブリッシング モードでは、部分修飾参照はパイプライン デフォルトを使用します。 Spark デフォルトとパイプラインが異なる場合は、移行する前に、部分的に修飾されたテーブルまたはビューの名前を完全修飾する必要があります。

注記

移行後、コードから LIVE キーワードを削除できます。オプションで、 LIVE キーワードを完全修飾のテーブル名またはビュー名に置き換えることができます。

LIVE キーワードを使用した列参照

LIVE キーワードを使用して、デフォルト公開モードで列を定義することはできません。たとえば、次のコードがあるとします。

SQL
CREATE OR REPLACE MATERIALIZED VIEW target AS SELECT LIVE.source.id FROM LIVE.source;

移行する前に、次のように置き換える必要があります。

SQL
CREATE OR REPLACE MATERIALIZED VIEW target AS SELECT source.id FROM LIVE.source;

このバージョンは、どちらの公開モードでも機能します。

警告とエラー

従来の公開モードでの一部の警告は、デフォルトの公開モードのエラーに置き換えられました。

自己参照 自己参照 (または循環参照) は、デフォルトの公開モードでは許可されません (また、従来の公開モードでは未定義の結果がありました)。例えば:

SQL
CREATE OR REPLACE MATERIALIZED VIEW table1 AS SELECT * FROM target_catalog.target_schema.table1;

従来の公開モードでは警告が生成されます (結果が未定義になります)。デフォルトの公開モードでは、エラーが発生します。

マルチパート名 デフォルトの公開モード (マルチパート名) では、名前にピリオドを使用することはできません。たとえば、次の Python コードはレガシ モードでは有効ですが、デフォルト モードでは有効ではありません。

Python
@dlt.view(name=”a.b.c”)
def transform():
return

移行する前に、ビューの名前をピリオド文字を含まない名前に変更します。

トラブルシューティング

次の表では、従来の公開モードから移行するときに発生する可能性のあるエラーについて説明します。

エラー

説明

CANNOT_MIGRATE_HMS_PIPELINE

Hive metastore パイプラインでは移行はサポートされていません。別の方法として、移行前に Hive metastore から Unity Catalog にパイプラインをクローニングできる場合があります。 「Unity CatalogパイプラインのクローニングによるHive metastore パイプラインの作成 」を参照してください。

MISSING_EXPECTED_PROPERTY

このエラーは、 pipelines.enableDPMForExistingPipeline 構成を追加する前に最新の更新を実行しなかったことを示します。その設定を削除し、欠落している場合は、trueに設定されたpipelines.setMigrationHints設定を追加します。更新を実行し、手順 3 から続行します。

PIPELINE_INCOMPATIBLE_WITH_DPM

このエラーは、パイプライン コードがデフォルトの公開モードと完全に互換性がないことを示しています。移行のためのパイプラインの準備を参照してください。