Parquet テーブルと Iceberg テーブルを段階的に複製して Delta Lake する

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

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

プレビュー

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

この機能を使用するには、 Databricks Runtime 11.3 以降が必要です。

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

Databricks には、 レイクハウスにデータを取り込むためのオプションが多数用意されています。 Databricks では、次の状況で 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 テーブルで clone を使用する場合は、次の追加の制限が適用されます。

  • パーティションを持つ Parquet テーブルを Hive metastore などのカタログに登録してから、複製し、テーブル名を使用してソース テーブルを識別する必要があります。 パーティションを持つ Parquet テーブルにパスベースのクローン構文を使用することはできません。

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

  • 更新、削除、またはマージが発生した Iceberg 読み取りマージテーブルを複製することはできません。

  • 切り捨てられた列で定義されたパーティションを持つ Iceberg テーブルのクローン作成に関する制限事項を次に示します。

    • Databricks Runtime 12.2 LTS 以前では、サポートされる切り捨てられた列の型はstringのみです。

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

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

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

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