メインコンテンツまでスキップ

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

備考

プレビュー

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

Databricksクローン機能を使用して、ParquetまたはApache 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 テーブルをディープクローンするには、次の構文を使用します。

SQL
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 テーブルをシャロークローンするには、次の構文を使用します。

SQL
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 テーブルのディープ クローンまたはシャロー クローンを作成することもできます。

SQL
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 テーブルのクローン作成に関する制限です。

    • 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 以降で収集されます。