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 以降では、
string
、long
、またはint
型の切り捨てられた列を操作できます。Databricks では、型
decimal
の切り捨てられた列の操作はサポートされていません。
増分クローンは、ソーステーブルからスキーマの変更とプロパティを同期し、スキーマの変更とクローンテーブルにローカルに書き込まれたデータファイルは上書きされます。
Unity Catalog は浅いクローンをサポートしていません。
注
Databricks Runtime 11.3 では、この操作ではファイル レベルの統計は収集されません。 そのため、ターゲット テーブルは Delta Lake のデータ スキップによるメリットを享受できません。 ファイル レベルの統計は、Databricks Runtime 12.2 LTS 以降で収集されます。