はじめに
今回は、Delta UniForm について、簡単にまとめてみます。
Delta UniFormとは
Delta UniForm は、正式には Delta Universal Format と呼ばれる機能です。
一言でいうと、
Delta Lakeのテーブルを、IcebergやHudiのクライアントから読めるようにする仕組み です。
Delta Lake、Iceberg、Hudi は、それぞれテーブル管理の仕組みは違いますが、実データとしては Parquetファイル を使い、その上に メタデータ層 を持つという点が共通しています。UniFormはこの共通点を利用し、Deltaテーブルに対してIcebergなどのメタデータを生成します。
つまり、データ本体を変換・コピーするのではなく、
同じParquetデータを、別のテーブルフォーマットからも読めるようにする
という考え方です。
何がうれしいのか
一番のメリットは、データを二重持ちしなくてよいことです。
たとえば、Delta Lakeで管理しているテーブルを、Iceberg対応のクエリエンジンから読みたい場合、従来であれば別形式に変換したり、データをコピーしたりする構成になりがちです。
しかしUniFormを使うと、Deltaテーブルに対してIcebergメタデータが生成されるため、IcebergクライアントからはIcebergテーブルのように読めます。データファイルは1つのコピーのまま、複数の形式のクライアントからアクセスできるのがポイントです。
ざっくりイメージ
Delta Lake テーブル
├── Parquet データファイル
├── Delta メタデータ
└── Iceberg メタデータ(UniFormで生成)
実体のデータはParquetのままです。
そこに、Delta用のメタデータだけでなく、Iceberg用のメタデータも用意することで、Iceberg対応エンジンからも読み取れるようになります。
注意点
UniFormは便利ですが、万能な相互変換機能ではありません。
特に重要なのは、IcebergやHudi側からは基本的に読み取り用途として考える点です。公式ドキュメントでも、Iceberg/Hudi視点では読み取り専用であり、Delta Lake以外の書き込みクライアントが書き込むと、Deltaテーブルの破損やデータ損失につながる可能性があると注意されています。
つまり、
- 書き込みはDelta Lake側で行う
- Iceberg/Hudi側からは読む
- メタデータ生成のタイミングや対応バージョンを確認する
という前提で使うのが安全です。
まとめ
Delta UniFormは、
Delta Lakeのテーブルを、IcebergやHudiの世界からも読めるようにするための互換レイヤー です。
ポイントをまとめると次のとおりです。
- Delta LakeテーブルをIceberg/Hudiクライアントから読める
- 実データはParquetのまま、追加のメタデータを生成する
- データをコピーせず、1つのデータ実体を複数エンジンから活用しやすくなる
- ただしIceberg/Hudi側からの書き込み用途ではなく、基本は読み取り用として扱う
データレイクハウスでは、Delta LakeやIcebergのようなテーブルフォーマットが重要になります。以前の記事でも、IcebergではObject Storage上でテーブル管理や履歴管理、タイムトラベルを扱えることを整理しました。
UniFormは、そのようなテーブルフォーマット同士の“分断”を少しやわらげるための仕組みとして理解すると分かりやすいと思います。