Parquet テーブルと Iceberg テーブルを段階的に Delta Lake にクローンする

Databricksクローン機能を使用して、ParquetまたはIcebergデータソースからマネージドテーブルまたは外部Deltaテーブルにデータを増分変換できます。

Parquet と Iceberg の Databricks クローンは、 Delta テーブルのクローン 作成と テーブルの Delta Lake への変換に使用される機能を組み合わせたものです。 この記事では、この機能の使用例と制限事項について説明し、例を示します。

プレビュー

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

注:

この機能には、Databricks Runtime 11.3 LTS 以降が必要です。

Parquet または Iceberg データの増分取り込みにクローンを使用する場合

Databricks には、 レイクハウスにデータを取り込むためのオプションが多数用意されています。 Databricks では、次の状況で clones を使用して Parquet または Iceberg データを取り込むことをお勧めします。

注:

ソース テーブルという用語は、複製するテーブルとデータ ファイルを指し、ターゲット テーブルは、操作によって作成または更新された Delta テーブルを指します。

  • Parquet または Iceberg から Delta Lake への移行を実行していますが、ソース テーブルを引き続き使用する必要があります。

  • ターゲットテーブルと、追加、更新、および削除を受け取る本番運用 ソース テーブルとの間で、取り込み専用の同期を維持する必要があります。

  • レポート、機械学習、またはバッチ ETL のために、ソースデータの ACID 準拠 のスナップショットを作成する必要があります。

クローンの構文は何ですか?

Parquet と Iceberg のクローンは、Delta テーブルのクローン作成に使用されるのと同じ基本構文を使用し、浅いクローンと深いクローンをサポートします。 詳細については、「 クローンの種類」を参照してください。

Databricks では、ほとんどのワークロードでクローンを段階的に使用することをお勧めします。 Parquet と Iceberg のクローン サポートでは、SQL 構文が使用されます。

注:

Parquet と Iceberg のクローンには、クローン作成や Deltaへの変換とは異なる要件と保証があります。Parquet テーブルと Iceberg テーブルのクローニングに関する要件と制限を参照してください。

ファイルパスを使用して Parquet テーブルまたは Iceberg テーブルをディープクローンするには、次の構文を使用します。

CREATE OR REPLACE TABLE <target-table-name> CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> CLONE iceberg.`/path/to/data`;

ファイルパスを使用して Parquet テーブルまたは Iceberg テーブルをシャロークローンするには、次の構文を使用します。

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE iceberg.`/path/to/data`;

次の例に示すように、メタストアに登録されている Parquet テーブルのディープ クローンまたはシャロー クローンを作成することもできます。

CREATE OR REPLACE TABLE <target-table-name> CLONE <source-table-name>;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE <source-table-name>;

Parquet テーブルと Iceberg テーブルのクローン作成の要件と制限事項

ディープ・クローンとシャロー・クローンのどちらを使用しているかにかかわらず、クローンの発生後にターゲット・テーブルに適用された変更をソース・テーブルに同期して戻すことはできません。 クローンによるインクリメンタル同期は一方向であるため、ソーステーブルへの変更をターゲット Delta テーブルに自動的に適用できます。

Parquet テーブルと Iceberg テーブルでクローンを使用する場合は、次の追加の制限が適用されます。

  • パーティションを持つテーブルをParquet Unity CatalogHive metastoreやレガシー などのカタログに登録 、クローンを作成してテーブル名を使用してソース テーブルを識別する必要があります。パーティションを持つ Parquet テーブルには、パスベースのクローン構文を使用できません。

  • パーティションの進化を経験した Iceberg テーブルをクローンすることはできません。

  • 更新、削除、またはマージが発生した Iceberg マージオンリードテーブルをクローンすることはできません。

  • 以下は、切り捨てられたカラムに定義されたパーティションを持つ Iceberg テーブルのクローン作成に関する制限です。

    • Databricks Runtime 12.2 LTS 以下では、切り捨てられる列の種類は stringのみです。

    • Databricks Runtime 13.3 LTS 以降では、 stringlong、または int型の切り捨てられた列を操作できます。

    • Databricks は、 decimal型の切り捨てられた列の操作をサポートしていません。

  • インクリメンタル・クローンは、ソース・テーブルからスキーマの変更とプロパティを同期します。 スキーマの変更と、クローニングされたテーブルに直接書き込まれたデータファイルは上書きされます。

  • Unity Catalog では、Parquet テーブルや Iceberg テーブルの浅いクローンはサポートされていません。

  • パスを定義するときに glob パターンを使用することはできません。

注:

Databricks Runtime 11.3 LTS では、この操作ではファイルレベルの統計は収集されません。 そのため、ターゲット テーブルは Delta Lake データのスキップの恩恵を受けません。 ファイルレベルの統計は、Databricks Runtime 12.2 LTS 以降で収集されます。