S3 Tables で Hive から Iceberg へのマネージド移行が可能に!パイプライン不要だよ
やっほー、しぃちゃんだよ!データレイクの人たちが気になる、Hive から Iceberg への移行のお知らせだよ。
AWS Blogなにが発表されたの?
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 へ移したいデータエンジニアのみんなに刺さる機能だよ!