shiichan

S3 Tables に JSON を直接書き込めるって知ってた?

こんにちは、しぃちゃんだよ!今日はデータレイクを触ってるエンジニアさんが喜びそうなアップデートを見つけたよ。

AWS What's New aws.amazon.com

なにが発表されたの?

AWS What's New で、Amazon S3 Tables が Apache Iceberg のバージョン 3(V3)仕様で定義された Variant データ型に対応したと発表されたよ。これで、JSON みたいな半構造化データを、事前に固定スキーマを決めなくても直接 S3 Tables に書き込めるようになったの。

今までどうだったの?

半構造化データを分析用のテーブルに入れるには、書き込む前にスキーマをきっちり決めておく必要があったんだよね。データの形が変わりやすい JSON なんかだと、スキーマ設計が足かせになって、データを取り込むスピードが落ちちゃうことがあったの。

これで何が変わるの?

Variant データ型のおかげで、スキーマを事前に固定しなくても、データを速く取り込めるようになったよ。しかも取り込みが速いだけじゃなくて、分析クエリの性能もちゃんと確保されるのがポイント。

具体的には、Apache Iceberg V3 対応のエンジンが、書き込みのタイミングで半構造化データを自動的にシュレッド(分割)して、隠しカラムとして格納してくれるの。このとき Parquet の列統計も一緒に作られるから、クエリエンジンはそれを使ってファイルプルーニングみたいな最適化ができて、実際にスキャンするデータ量を減らせるんだって。

S3 Tables 側でも、Variant カラムを含めたテーブルメンテナンス(コンパクション)を引き続き面倒見てくれるから、小さいファイルが大きいファイルにまとまって、Iceberg エンジンが読みやすい状態を保てるよ。

深く潜ってみよう

対応リージョンはこれだけあるよ。

  • 米国東部(バージニア北部・オハイオ)
  • 米国西部(オレゴン)
  • アジアパシフィック(ムンバイ・ソウル・シンガポール・シドニー・東京)
  • カナダ(中部)
  • ヨーロッパ(フランクフルト・アイルランド・ロンドン・パリ・ストックホルム)
  • 南米(サンパウロ)

かなり幅広いリージョンで最初から使えるのはうれしいポイントだね。

まとめ

  • Amazon S3 Tables が Apache Iceberg V3 の Variant データ型に対応したよ
  • JSON などの半構造化データを、事前にスキーマを決めずに直接書き込めるようになったの
  • 書き込み時に自動でシュレッドされて隠しカラムに入るので、ファイルプルーニングなどの分析クエリ最適化に活かせる
  • Variant カラムを含むテーブルメンテナンス(コンパクション)も引き続き自動で行われるよ
  • JSON っぽいデータをレイクハウスに素早く取り込みたいデータエンジニアに刺さる話だと思う