Slide 1

Slide 1 text

書籍『実践 Apache Iceberg』の歩き⽅ 2025年10月29日 クラウド事業本部 コンサルティング部 ⽯川 覚

Slide 2

Slide 2 text

© 2025 Classmethod, Inc. はじめに 1 名前:石川 覚(いしかわ さとる) 所属:クラウド事業本部 担当:コンサルタント、ブログ・登壇等 経歴:メーカーでSE、研究開発   →ITベンチャーで製品開発、受託研究   →クラスメソッド(2014/6〜) 好きなサービス: Amazon Redshift/Athena/Bedrock、 Google BigQuery Sapporo 2020-2025 Japan AWS Top Engineers 2021-2025 Japan AWS All Certifications Engineers 


Slide 3

Slide 3 text

© 2025 Classmethod, Inc. ブログ: データアナリティクス通信 2 弊社のブログにて、2022年からクラスメソッド データアナリティクス 通信(AWSデータ分析編)を連載中です! 
 https://dev.classmethod.jp/referencecat/classmethod-da-news-aws-analytics/

Slide 4

Slide 4 text

© 2025 Classmethod, Inc. アジェンダ 3 ● はじめに ● Apache Icebergの基礎技術 ● 体系的に学ぶ『実践 Apache Iceberg』の紹介 ● 実践的な活用と学び ● 最後に

Slide 5

Slide 5 text

© 2025 Classmethod, Inc. Apache Icebergの基礎技術 4

Slide 6

Slide 6 text

© 2025 Classmethod, Inc. 5 Apache Iceberg とは Apache Icebergとは、データレイク上にあるペタバイト規模の巨大な分析用 データセットを管理するために設計された、オープンソースのテーブル フォーマット(OTF)です 。 re:Invent 2021でAmazon Athenaがサ ポートを開始したことでも、広く注目を 集めることになりました。 2023年にAmazon Athena(Iceberg) とdbt-athenaのソリューションついて AWSのウェビナーで紹介。

Slide 7

Slide 7 text

© 2025 Classmethod, Inc. 6 なぜ今 Apache Iceberg なのか? 従来のデータレイクは、ビッグデータ時代の低コストストレージとして普及 しましたが、エンタープライズ利用では深刻な課題ありました。 ● データ整合性の欠如 ○ 複数ジョブの同時実行時、読み込み・書き 込みの競合でデータ不整合が発生。トラン ザクション保証がなく、信頼性の高い分析 基盤として機能しない。 ● 少量レコード更新処理の非効率性 ○ GDPRや個人情報修正など少量レコード更 新でも、パーティション全体の再書き込み が必要。データ量に比例してコストと時間 が増大する。 ● パーティション管理の限界 ○ パーティション数が数千~数万に増加する と、メタデータ管理のオーバーヘッドでク エリ性能が著しく劣化する。 ● クエリ設計の複雑化 ○ 効率的なクエリにはパーティション構造の 理解が必須。開発者の負担が大きく、最適 化が困難。 ● 過去状態の復元困難 ○ 誤削除やデータ破損時、特定時点への復元 が事実上不可能。

Slide 8

Slide 8 text

© 2025 Classmethod, Inc. 7 Apache Icebergによる解決 データレイクの課題( AS-IS) Apache Icebergによる解決( TO-BE) データ整合性の欠如 楽観的同時実行制御(Optimistic Concurrency Control) 少量レコード更新処理の非効率性 Row-level の更新・削除操作をサポート(MERGE、UPDATE、 DELETE) パーティション管理の限界 Hidden Partitioning(隠しパーティション) により、パーティションを 意識不要 クエリ設計の複雑化 パーティション変換(Partition Evolution) 機能により、ユーザーは パーティション構造を意識せずにクエリ可能 過去状態の復元が困難 タイムトラベル機能により、任意の時点のスナップショットにアクセ ス可能 Apache Icebergは、データレイクの課題をACIDトランザクション、隠し パーティション、スキーマ/パーティション進化といった特長で解決します。

Slide 9

Slide 9 text

© 2025 Classmethod, Inc. 体系的に学ぶ『実践 Apache Iceberg』の紹介 8

Slide 10

Slide 10 text

© 2025 Classmethod, Inc. 9 Apache Icebergを体系的に学び、実務に活用したい方向けの専門書です。手 を動かしながら学ぶことを重視しており、全体を通じて多くの章にハンズオ ンがあり、GitHubにリポジトリが公開されています。 書籍『実践 Apache Iceberg』 https://dev.classmethod.jp/articles/20251022-review-of-apache-ioceberg-in-practice/ https://dev.classmethod.jp/articles/20251024-handson-of-apache-iceberg-in-practice/ https://github.com/murashitas/iceberg_book_handson

Slide 11

Slide 11 text

© 2025 Classmethod, Inc. 10 3部構成で段階的に理解を深める 基礎編(第1部:Apache Icebergの基本) 実装編(第2部:分散ク エリエンジンでの利⽤) 応⽤編(第3部:ユース ケースと応⽤) 従来のデータレイクが抱えて いた課題に対し、Icebergが どのように解決するかを解説 しています。メタデータレイ ヤーとデータレイヤーの構造 理解は、その後の機能を深く 理解する上で必要な知識とな ります。 1 2 3 Spark、Flink、Trino、 Hive、PyIcebergという5つの 主要なクエリエンジンでの実 装⽅法を網羅。各クエリエン ジンについて、座学とハンズ オンで学べる構成になってい ます。 Change Data Capture (CDC)によるリアルタイム データ同期、SCD Type 2によ る履歴管理、 Write-Audit-Publish(WAP) パターンによるデータ品質管 理など、実務で直⾯する課題 への具体的なソリューション パターンが⽰されています。

Slide 12

Slide 12 text

© 2025 Classmethod, Inc. 11 Apache Icebergを包括的に解説することを目的としており、自身の課題に応 じて、優先的に読むべき章を選択する際の参考にしてください。 ● 即効性を求める場合:自分の課題に最も関連する章から読み始め、必要に応じて基 礎編(第1-3章)に戻る ● 体系的に学びたい場合:第1章から順番に読み進め、自分の役割に関連する章は特 に丁寧に実践する ● ハンズオン重視の場合:GitHubのサンプルコードがある章を優先的に選び、手を 動かしながら学習する この本を効率よく活用する読み方 いずれのアプローチでも、第1章「データレイクの課題とApache Iceberg」と 第2章「Apache Icebergの仕組みと機能」は全体の理解の基盤となるため、 早い段階で目を通しておくことをお勧めします。

Slide 13

Slide 13 text

© 2025 Classmethod, Inc. 実践的な活用と学び 12

Slide 14

Slide 14 text

© 2025 Classmethod, Inc. 13 書籍から実践へ 導入で直面する3つのポイント 本書で体系的な知識を学んだ上で、現場で直面しやすいポイントを3つ厳選し て解説します。 1. データ分析基盤の全体設計 - メダリオンアーキテクチャでのIceberg活用 2. パフォーマンス最適化:更新戦略 CoWとMoR の使い分け 3. 運用の落とし穴:パーティション設定の注意点と対策

Slide 15

Slide 15 text

© 2025 Classmethod, Inc. 14 1. メダリオンアーキテクチャでの活用 Bronze Gold ‧すべての⽣データを変更せずに取り 込む。 ‧ソースデータの完全な履歴(監査証 跡)を保持する。 ‧下流の処理(Silver層へのETL)のイ ンプットとする。 ソースシステムから取り込んだ⽣デー タをそのままの形式で保存する層 データをクレンジング、正規化、 他のデータと結合して、信頼できるデータ ソース(SSOT)を整備する層 Silver メダリオンアーキテクチャとは、データをBronze(生)、Silver(加工)、 Gold(集計)の3層(レイヤ)で管理するデータアーキテクチャです。 ユースケース(BI、機械学習など)に合わ せて、Silver層のデータをさらに集計‧加 ⼯したデータマートを配置する層 ‧データのクレンジング(NULL値の処 理、重複排除、データ型の統⼀)。 ‧ビジネスロジックに基づいたデータの正 規化と変換。 ‧複数のデータソースの結合とエンリッチ メント。 ‧ビジネスKPIや主要メトリクスを事前集 計する。 ‧BIツールやアナリストが直接クエリする ための、最適化されたデータセットを提供 する。 ‧機械学習の特徴量(Feature Store)と して利⽤する。

Slide 16

Slide 16 text

© 2025 Classmethod, Inc. 15 1. メダリオンアーキテクチャでの活用 レイヤ Icebergの機能 応用例 Bronze (生) スキーマ進化 (Schema Evolution) ソースシステム側のスキーマ変更(カラムの追加など)が発生しても、Icebergは ADD COLUMNなどの操作を柔軟に受け入れられる。 パーティショニング (hidden partitioning) 取り込み日(例: event_date)などパーティショニング(hidden partitioning)する ことで、Silver層への増分処理の効率化 Silver (加工) ACIDトランザクション Bronze層から増分データをSilver層のテーブルにマージ(UPSERT: Update + Insert)する際に、MERGE INTO構文を使ってアトミックに処理 パーティショニング (Partition Evolution) データの物理的なレイアウトをSQLから隠蔽できます。後からパーティション戦略 を変更(Partition Evolution)することも容易になります。 Gold (集計) パフォーマンス最適化 (Compaction & Sorting) BIツールから頻繁にクエリされる。メンテナンス機能( REWRITE DATA FILES)は、小 さなファイルのマージ( Compaction)や特定のカラムでデータをソート( sort order)する ことで、クエリパフォーマンスを大幅に向上させる Time Travel (Snapshot) 「先週末時点のレポート」や「前日比」などの過去のSnapshot(特定の時点の集 計結果)を簡単に参照 メダリオンアーキテクチャ各レイヤにおけるIcebergの活用事例です。

Slide 17

Slide 17 text

© 2025 Classmethod, Inc. 16 2. 更新戦略 CoWとMoR の使い分け 特性 CoW(Copy-on-Write) MoR(Merge-on-Read) 優先度 読み取り効率を最大化 書き込み速度を優先 メカニズム 変更行を含むデータファイル全体を再作成 変更差分を削除ファイルとして記録し、読み取り時に マージ 書き込みコスト 高い(ファイル全体を書き換え) 低い(差分のみ書き込み) 読み込みコスト 低い(特になし) 高い(読込時に更新データを反映する必要がある) 用途例 行レベルの変更が少ない読み取り中心のBI 分析 頻繁な少量更新やストリーミング処理 OPTIMIZE実行時間 高速 Position Deleteは普通、Equality Deleteは低速 取り込み頻度に応じて書き込みモードを選択できます。リアルタイム取り込 みならMoR(Merge-on-Read)、バッチならCoW(Copy-on-Write)が適 切です。 ※ Apache Icebergは、一般的にデフォルト CoWですが、Amazon Athena の更新系クエリのデフォルトは MoRで す。

Slide 18

Slide 18 text

© 2025 Classmethod, Inc. 17 3. 隠しパーティション設定の注意点と対策 隠しパーティショニング(Hidden Partitioning)とは、元のデータ列(例: タイムスタンプ)の値に基づいて、Icebergが自動的にパーティション値を生 成・管理する仕組みです。 ● 従来(Hiveテーブル) ○ order_date=2023-10-29 のような物理的なパーティ ション列(と物理フォルダ)をユーザーが作成・管理し、クエ リでも WHERE order_date > '2023-10-28’ と指定 する必要がある。 ● Icebergテーブル ○ CREATE TABLE ... PARTITION BY day(order_timestamp) のように定義すると、データ 追加時、Icebergは order_timestamp 列の値から自動 で日単位のパーティションに振り分ける。クエリは WHERE order_timestamp > '2023-10-28 00:00:00' と 元の列を指定するだけで、 Icebergが自動で不要なパー ティションを読み飛ばす。 CREATE EXTERNAL TABLE hivetable.sales(… order_timestamp timestamp) PARTITIONED BY (order_date date)… CREATE TABLE iceberg.sales(… order_timestamp timestamp) PARTITIONED BY (day(order_timestamp))… sales/ data/ 13VN2A/ order_timestamp_day=2023-10-28/ 20251028_203253_00087_zsnwu-a3….parquet sales/ order_date=2023-10-28/ salse_20231028000000.parquet

Slide 19

Slide 19 text

© 2025 Classmethod, Inc. 18 変換関数をデータ列に適用してパーティションを定義、パーティション用の カラムをデータスキーマに追加する手間が不要となる。 3. 隠しパーティション設定の注意点と対策 関数 説明 サポートしている型 year(ts) 日付またはタイムスタンプから「年」を抽出します。 date, timestamp month(ts) 日付またはタイムスタンプから「月」を抽出します。(例: 2025-10-29 → 2025-10) date, timestamp day(ts) 日付またはタイムスタンプから「日」を抽出します。(例: 2025-10-29 06:00 → 2025-10-29) date, timestamp hour(ts) タイムスタンプから「時」を抽出します。(例: 2025-10-29 06:01 → 2025-10-29-06) timestamp bucket(N, col) 値をハッシュ化し、N個のバケット(グループ)に均等に分散させます。カーディナリティ が高い列(例: UUID, ユーザーID)に適しています。 Amazon Athenaの場合は、Nに100以内を指定して同時更新パーティション数を超えない 運用が可能。 int, long, decimal, date, timestamp, string, binary truncate(L, col) 値を指定した幅(L)で切り捨てます。 ・文字列: 最初のL文字で切り捨てます。(例: truncate(3, 'Iceberg') → Ice) ・整数: Lの倍数に切り捨てます。(例: truncate(10, 123) → 120) int, long, decimal, string

Slide 20

Slide 20 text

© 2025 Classmethod, Inc. 19 3. 隠しパーティション設定の注意点と対策 失敗事例/課題 具体的な問題と影響 対策/ベストプラクティス パーティション 粒度が細かすぎ る デバイスIDなど高カーディナリティの列にそのま まパーティショニングを適用すると、パーティ ション数が爆発的に増加、大量の小さなデータ ファイル(スモールファイル)が生成される。 高カーディナリティの列には、 Bucket関数 (bucket(N, col)) を 使用してパーティション数を固定 数に制限し、均等分散させる 。 OPTIMIZEによ るストレージ爆 発 上記の理由で発生した大量のスモールファイルを 解消するためにOPTIMIZE TABLE REWRITE DATA(コンパクション)を実行すると、古い ファイルが即座に削除されず、新しいファイルと 一時的に重複して存在するため、ストレージ使用 量が爆発的に増加する。 コンパクション後、必ず expire_snapshots(スナップ ショット削除)を実行し、不要な 古いファイルを物理的に削除す る。 Icebergを大規模データ分析基盤に導入する際、不適切な隠しパーティショ ン設定とコンパクション運用(OPTIMIZE)の組み合わせは、クエリパフォー マンスの低下やストレージコストの爆発的な増加を招く可能性がある。

Slide 21

Slide 21 text

© 2025 Classmethod, Inc. 20 最後に ● Apache Icebergは、従来のデータレイクの課題(データ不整合、非効率な更 新、複雑なパーティション管理)を解決する強力なテーブルフォーマットであ る。 ● 『実践 Apache Iceberg』は、基礎から各クエリエンジン(Spark, Trino等)で の実装・応用までを体系的に学べる良書であり、ハンズオンも充実している。 ● 本日紹介できなかったが、ストリーミングインジェッションのテーブルの OPTIMIZE、効果的なソートオーダー、Equality Deleteなどの検討課題の解決に は、本書は不可欠な一冊。

Slide 22

Slide 22 text

© 2025 Classmethod, Inc. 21 最後に ● Apache Icebergは、従来のデータレイクの課題(データ不整合、非効率な更 新、複雑なパーティション管理)を解決する強力なテーブルフォーマットであ る。 ● 『実践 Apache Iceberg』は、基礎から各クエリエンジン(Spark, Trino等)で の実装・応用までを体系的に学べる良書であり、ハンズオンも充実している。 ● 本日紹介できなかったが、ストリーミングインジェッションのテーブルの OPTIMIZE、効果的なソートオーダー、Equality Deleteなどの検討課題の解決に は、本書が不可欠。 DECEMBER 1 – 5, 2025 | LAS VEGAS, NV Blog it!

Slide 23

Slide 23 text

No content