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