0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DeltaLakeとIcebergとは?その実態について(ファイルフォーマット-parquet、json、avro)

Posted at

はじめに

データレイクにACIDトランザクションをもたらすオープンテーブルフォーマットとして、Delta LakeとApache Icebergは非常に人気があります。どちらも分析に最適化されたParquet形式でデータを保存しますが、メタデータの管理方法やトランザクションログの構造は大きく異なります。

この記事では、Azure Data Lake Storage (ADLS) 上でそれぞれのテーブルを作成・データ挿入した際の実際のフォルダ構成をスクリーンショットベースで比較し、初心者でもイメージしやすいように解説します。さらに、Microsoft FabricのLakehouseショートカット機能を使って、IcebergテーブルをDelta形式で扱うハイブリッドなケースの場合の実態も画像で紹介します。

Delta Lakeの実態(ファイルフォーマット)

Delta Lakeテーブルでは、Parquet形式でデータを保存し、変更履歴は_delta_log/というフォルダに格納されます。

  • part-0000...snappy.parquet:実際のデータファイル
  • delta_log/00000000000000000000.json:初回のトランザクションログ
  • delta_log/00000000000000001000.checkpoint.crc:定期的に書かれるチェックポイントファイル(読み込み最適化のため)

各トランザクション(INSERT、UPDATE、DELETEなど)ごとにJSON形式のログファイルが追加され、これにより時系列の変更履歴(=タイムトラベル)が可能になります。

image.png

image.png

Icebergの実態(ファイルフォーマット)

空の状態(CREATE ICEBERG TABLE後)の実態

IcebergもデータはParquet形式で保存しますが、トランザクションログの仕組みが異なり、metadata/という専用フォルダでスナップショットを管理します。

空のテーブル作成直後:

  • metadata/00000-.metadata.json:初期スキーマを記録したJSON

データを挿入後(INSERT INTO後)の実態

  • data/:Parquetデータファイル格納フォルダ(例:snow__0_1.parquet)
  • metadata/00001-.metadata.json:新しいスナップショットを記録
  • manifest.avro:どのParquetファイルが含まれているかを示すAvroファイル

▽参考:ADLSにIcebergテーブルを作る手順

Icebergテーブルに対してFabricLHでショートカットし、Delta Lake変換したとき

Microsoft FabricのLakehouseでは、ADLS上のIcebergテーブルにショートカットを作成することで、Delta形式のように扱うことができます。

新たに _delta_log/ フォルダが仮想的に作られる(実際のストレージには存在せず、OneLakeメタデータ内で管理)

生成されるファイル例:

  • 00000000000000000000.json:現時点のIcebergスナップショットをDelta形式で記録したログ

  • latest_conversion_log.txt:変換に関する情報(成功・失敗など)

このように、元のIcebergのmetadataフォルダは保持されたまま、Delta Lakeの形式が「追加」されます。

image.png

delta_logの中身は以下

image.png

▽参考:Icebergへのショートカット

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?