Azure Databricks クローン機能を使用して、Parquet または Apache Iceberg データ ソースからマネージド または外部の Delta テーブルにデータを増分変換できます。
Parquet および Iceberg 用の Azure Databricks 複製では、Delta テーブルの複製と、Delta Lake へのテーブルの変換に使用される機能が組み合わされています。 この記事では、この機能のユース ケースと制限事項について説明し、例を示します。
重要
この機能はパブリック プレビュー段階にあります。
注
この機能を使うには、Databricks Runtime 11.3 LTS 以降が必要です。
複製を使用して Parquet または Iceberg データの増分インジェストを行う状況
Azure 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 テーブルで複製を使用する場合は、次の追加の制限が適用されます。
- テーブル名を複製してソース テーブルを識別する前に、Unity カタログや従来の Hive メタストアなどのカタログに Parquet テーブルをパーティションに登録する必要があります。 パーティションを含む Parquet テーブルには、パスベースの複製構文を使用できません。
- パーティションの進化歴がある Iceberg テーブルは複製できません。
- 更新、削除、またはマージが発生した Iceberg の読み取り時マージ テーブルを複製することはできません。
- 切り捨てられた列でパーティションが定義されている Iceberg テーブルを複製する場合の制限事項を次に示します。
- Databricks Runtime 12.2 LTS 以前では、唯一サポートされている切り捨てられた列は
string型です。 - Databricks Runtime 13.3 LTS 以降では、
string、longまたはint型の切り捨てられた列を扱うことができます。 - Azure Databricks では、
decimal型の切り捨てられた列の処理はサポートされていません。
- Databricks Runtime 12.2 LTS 以前では、唯一サポートされている切り捨てられた列は
- 増分クローンは、ソース テーブルからのスキーマの変更とプロパティを同期します。 複製されたテーブルに直接書き込まれたスキーマ変更とデータ ファイルはすべてオーバーライドされます。
- Unity Catalog では、Parquet テーブルまたはアイス テーブルの浅い複製はサポートされていません。
- パスを定義するときに glob パターンを使用することはできません。
注
Databricks Runtime 11.3 LTS では、この操作でファイル レベルの統計情報を収集できません。 そのため、ターゲット テーブルは Delta Lake のデータ スキップの恩恵を受けられません。 ファイル レベルの統計情報は、Databricks Runtime 12.2 LTS 以降で収集されます。