shiichan

S3 Tables で Hive から Iceberg へのマネージド移行が可能に!パイプライン不要だよ

やっほー、しぃちゃんだよ!データレイクの人たちが気になる、Hive から Iceberg への移行のお知らせだよ。

AWS Blog aws.amazon.com

なにが発表されたの?

AWS Blog で、Amazon S3 Tables が Apache Hive テーブルを、フルマネージドの Apache Iceberg テーブルへ移行するマネージド機能を発表したよ。

移行元は、AWS Glue Data Catalog に登録された、Amazon S3 上の Parquet データだよ。パイプラインを作ったり、コンピュートを用意したりしなくてよくて、本番のワークロードも動かしたまま移行できるの。

今までどうだったの?

Hive テーブルから Iceberg への移行は、検証や型変換、再圧縮、ロールバックなどを自前で組む必要があって、複雑になりがちだったよね。

今回のマネージド移行は、その複雑さを S3 Tables 側が引き受けてくれるというものだよ。

これで何が変わるの?

移行の流れの特徴はこうだよ。

  • 事前の検証と計画: コピーの前に、対象のソースオブジェクトをすべて特定して、互換性レポートを作る
  • 自動処理: データの検証、互換性チェック、型変換、ファイルの再圧縮、コンパクションを S3 Tables が行う
  • 繰り返しの同期: sync を何度でも実行できて、毎回、前回からの変更分だけをコピーする。ソースへの書き込みは続けられる
  • 切り替え: 切り替え時にソースへの書き込みを止めるのは数分だけ
  • 移行中の状態: 移行先テーブルは移行中は読み取り専用で、完了すると読み書き可能になる
  • 既定値: 移行先の Iceberg テーブルは、クエリ性能とストレージ効率のための推奨既定値で作られる

深く潜ってみよう

手順は、コンソールと CLI/SDK の 2 通りだよ。

コンソールの場合はこうだよ。

  • 移行先のテーブルバケットを選んで Create table from migration を選ぶ
  • 移行先の名前空間とテーブル名を選ぶ
  • 移行を開始すると、検証、互換性レポートの作成、コピーが始まる
  • 必要なだけ sync して、移行を完了する
  • Amazon Athena、Amazon SageMaker Unified Studio、Iceberg REST API 互換のツールでクエリする

CLI/SDK の場合は、IAM ロール、移行先テーブルバケット、名前空間、テーブル名、暗号化、ストレージクラス、Iceberg プロパティ、スキーマ、パーティション仕様、移行元の Glue テーブル、メンテナンス設定、レポートの出力先などを書いた JSON を用意するよ。そして、次の順に実行するの。

aws s3tables start-table-migration
aws s3tables sync-table-migration

sync は必要なだけ繰り返して、最後に移行を完了するよ。なお、Agent Toolkit for AWS の migrating-hive-tables-to-s3-tables スキルを使うと、エージェントが IAM ポリシーの分析から、Start・Sync・Complete の呼び出し、進捗と切り替えの監視までを案内してくれるよ。

条件と制限はこれだよ。

  • 移行元は Parquet 形式の Hive テーブル
  • 移行元は AWS Glue に登録されていること
  • 提供開始時点では、同じ AWS アカウント・同じリージョン内の移行のみ
  • 数値のクォータや制限は記事には載っていない

料金は、コピーしたデータ分だけで、Hive から Iceberg への変換自体は無料だよ。S3 Intelligent-Tiering のソースオブジェクトは、今のアクセス階層のままになるの。

利用できるリージョンはこちらだよ。

  • 米国: バージニア北部、オハイオ、オレゴン
  • アジアパシフィック: ムンバイ、シンガポール、シドニー、東京
  • ヨーロッパ: フランクフルト、アイルランド、ストックホルム

まとめ

  • Glue 登録済みの Parquet な Hive テーブルを、S3 Tables の Iceberg テーブルへマネージドで移行できる
  • 差分同期ができ、書き込み停止は切り替え時の数分だけ
  • コンソール、CLI/SDK、エージェントスキルから使える
  • 同一アカウント・同一リージョン内のみで、料金はコピーしたデータ分

Hive ベースのデータレイクを Iceberg へ移したいデータエンジニアのみんなに刺さる機能だよ!