【AWS re:Invent 2024】Amazon EMR Serverlessを使用してApache Icebergについて学ぶワークショップに参加してきました!

記事タイトルとURLをコピーする

AWS re:Invent 2024から帰国して真っ先に食べたのは白米と納豆と漬物の小菅です。
2024年12月02日~06日でラスベガスで開催されたAWS re:invent 2024に参加してまいりました。
Keynote、数多くのブレイクアウトセッションがある中で
以下ワークショップに参加しましたので、本ブログで概要と感想について共有します。

  • Build open table data lakes for real-time insights with Apache Iceberg [REPEAT] ANT402-R1
    • (直訳)Apache Icebergを使用してリアルタイムの分析情報を得るためのオープンデータレイクを構築する

ワークショップ概要

Apache Icebergとはなにか?

Apache Icebergとは、大規模データ分析のために設計された最新のオープンソーステーブルフォーマットです。また、多様な分析エンジンと連携が可能で、具体的には、Spark、Trino、Flink、Presto、Hive、Impala などの異なるデータ処理エンジンが、同一のテーブルに対して同時かつ安全にアクセスし、操作を行うことができます。

ワークショップのあと自分でS3をデータソースとしてApache Icebergテーブルを作成してみて改めて確認すると、dataとmetadataというプレフィクスが生成されます。
dataにはParquetファイル(データ)、metadataにはjsonファイル(メタデータ)が格納されていました。

Apache Icebergを利用するメリットは以下の通りとのことです。

  • データの一貫性
  • クエリ速度
  • データ構造の柔軟性
  • ベンダーロックインのない拡張可能なアーキテクチャ
  • タイムトラベルやロールバック機能を使ったデータのバージョン管理
Apache Icebergの使用感をプチお試ししたい方は以下を実施してみてください。
①Athenaで以下DDL文でテーブルを作成
CREATE TABLE iceberg_sample (
  `id` int, 
  `name` string, 
  `age` int, 
  `email` string, 
  `date` date, 
  `amount` float)
LOCATION 's3://<任意のS3バケット>/iceberg/sample/'
TBLPROPERTIES ('table_type' ='ICEBERG');
②Athenaで以下DML文でテーブルにデータを挿入
INSERT INTO iceberg_sample 
VALUES 
(1, 'User1', 67, 'user1@example.com', DATE '2021-08-17', CAST(341.07 AS REAL)),
(2, 'User2', 76, 'user2@example.com', DATE '2020-02-05', CAST(309.16 AS REAL)),
(3, 'User3', 27, 'user3@example.com', DATE '2020-01-22', CAST(975.51 AS REAL))
③Athenaで以下DML文でテーブルにデータを確認
SELECT * FROM iceberg_sample

現地ハンズオン概要

EMR Studio Notebooksを通して、データを効率的に処理し分析するシナリオとなっておりました。

  1. CloudFormationテンプレートをデプロイする
  2. EMR Serverlessのアプリケーションを作成する
  3. Nptebookは「pyspark」を選択する
  4. Notebookの通り実行していく

一貫してApache Icebergを扱うシナリオであり、初心者の私としては以下のような発見がありました。

  • プロパティに書き込み時はマージするかどうか、保持期間とかどうするかなど、GlueでApache Icebergテーブルを扱うときに使えるプロパティがあること
  • 小さいファイル数が多いと読み込みに時間がかかる問題に対して「オートコンパクション」機能というのがあり、自動的に大きなファイルに圧縮してくれるということ
    • この問題は、Apache Kafka や Amazon Kinesis などのストリーミング ソースからデータが継続的に取り込まれ、多数の小さなファイルがデータ ストア (Amazon S3 など) に書き込まれる場合に発生します

感想

ワークショップやセッションではしばし、「このサービス(もしくは機能)をワークロードで運用している人は挙手してください」ということが多々あり、日本以外の人たちのどのくらいがその技術を扱っているかということが知れたりするのも非常に勉強になります。

そして、このワークショップを通じて、Apache Icebergはどういうものでどのように使えるかを知ることができました。
また、最近のAWSの分析系アップデートを読んでいるとApache Icebergに絡む話をちらほら見かけるようになり、この技術を習得しておくとAWSで分析系のサービスや機能を扱うときに恩恵を受けることが多くなりそうと個人的に感じました。
これを機会に積極的にApache Icebergに触れていきたいと感じた、そんなワークショップでした。

Apache Icebergというキーワードでいうと最近リリースされたAmazon S3 TablesもApache Icebergを利用した機能になります。私が執筆した記事を掲載しておきますので是非こちらもご覧いただければと思います!

blog.serverworks.co.jp

小菅 信幸(執筆記事の一覧)

仙台在住/サウナをこよなく愛するエンジニア
2024 Japan AWS All Certifications Engineers