0
0

More than 1 year has passed since last update.

ParquetやIcebergからDelta Lakeへのインクリメンタルなクローン

Last updated at Posted at 2022-11-24

Incrementally clone Parquet and Iceberg tables to Delta Lake | Databricks on AWS [2022/10/5時点]の翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

ParquetやIcebergのデータソースからのデータを、マネージドあるいは外部Deltaテーブルにインクリメンタルに変換するためにDatabricksのクローン機能を活用することができます。

ParquetやIcebergに対するDatabricksのクローンは、DeltaテーブルのクローンDelta Lakeへのテーブル変換の機能を組み合わせます。本書では、この機能のユースケースと制限、そしてサンプルを説明します。

プレビュー
本機能はパブリックプレビューです。

注意
この機能はDatabricksランタイム11.3以降が必要です。

ParquetやIcebergデータのインクリメンタルな取り込みのためにいつクローンを使うべきか

Databricksでは、レイクハウスにデータを取り込むための数多くのオプションを提供しています。以下のシチュエーションにおいてParquetやIcebergを取り込む際にクローンを使用することをお勧めします。

注意
ソーステーブルという用語は、クローンされるテーブルとデータファイルを指し、ターゲットテーブルはオペレーションによって作成、更新されるDeltaテーブルを指します。

  • ParquetやIcebergからDelta Lakeへのマイグレーションを実施しているが、ソーステーブルを使い続ける必要がある。
  • 追加、更新、削除がなされるプロダクションソーステーブルとターゲットテーブル間の取り込みのみ動機を維持する必要がある。
  • レポーティング、機械学習、バッチETLにおけるソースデータのACID準拠のスナップショットを作成したいと考えている。

クローンの構文はどのようなものか?

ParquetやIcebergに対するクローンは、Deltaテーブルのクローンに使うものと同じ基本構文を使用し、シャロークローンとディープクローンをサポートしています。詳細に関してはクローンのタイプをご覧ください。

多くのワークロードにおいてインクリメンタルなクローンを用いることをお勧めします。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テーブルに対するクローンを使用する際には、以下の制限も適用されます。

  • このオペレーションでは、ファイルレベルの統計情報は収集しません。このため、ターゲットテーブルではDelta Lakeのデータスキッピングのメリットを享受することができません。
  • クローンする前に、パーティションを持つParquetテーブルをHiveメタストアのようなカタログに登録し、ソーステーブルと同じテーブル名を使用しなくてはなりません。パーティションを持つParquetテーブルに対してパスベースのクローン構文を使用することはできません。
  • パーティション進化をおこなったIcebergテーブルをクローンすることはできません。
  • Icebergテーブルにはパスのみを用いてアクセスすることができます。テーブル名はサポートされていません。
  • Unity Catalogではシャロークローンをサポートしていません。

Databricks 無料トライアル

Databricks 無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0