Upgrade to Pro — share decks privately, control downloads, hide ads and more …

S3 Tablesを利用するデータレイク構成について考えてみた

S3 Tablesを利用するデータレイク構成について考えてみた

JAWS-UG 栃木 オフライン #5での登壇資料になります。
https://jawsug-tochigi.connpass.com/event/370897/

Avatar for daiki.handa

daiki.handa

November 14, 2025
Tweet

More Decks by daiki.handa

Other Decks in Technology

Transcript

  1. Copyright © 2025 BeeX Inc. All Rights Reserved. S3 Tablesを利用するデータレイク構成について

    考えてみた JAWS-UG 栃木 オフライン #5 株式会社BeeX 半田 大樹
  2. Copyright © 2025 BeeX Inc. All Rights Reserved. 2 自己紹介

    Name | 半田 大樹(Handa Daiki) Corp | 株式会社BeeX Job | クラウドエンジニア Like | Amazon S3 Hobby | クラウド資格取得、猫のお世話 ×14 ×10 ×13 @handydd18 2025 Japan AWS ALL Certifications Engineer 2024 Japan AWS ALL Certifications Engineer 2023 Japan AWS Top Engineer 2023 Japan AWS ALL Certifications Engineer 2022 APN ALL AWS Certifications Engineer 執筆書籍 →Data JAWS-UG栃木 オフライン#5
  3. Copyright © 2025 BeeX Inc. All Rights Reserved. 3 目次

    ⚫Amazon S3 Tablesとは ⚫データレイクの課題の具体例 ⚫S3 Tablesを利用するデータレイク構成を考えてみる ⚫まとめ
  4. Copyright © 2025 BeeX Inc. All Rights Reserved. 5 Amazon

    S3 Tablesとは ⚫re:Invent 2024のキーノートで発表された 分析ワークロードに最適化された新しいS3ストレージ ⚫2025/11/15時点では以下の4種類のS3ストレージがある • 汎用バケット • ディレクトリバケット • テーブルバケット→S3 Tables • ベクトルバケット ⚫テーブルバケットに格納されたデータは内部的に Apache Iceberg形式で保存される ⚫Apache IcebergとはOSSで提供されるOpen Table Formatの一つ ⚫S3 TablesはS3+Icebergのマネージドサービス
  5. Copyright © 2025 BeeX Inc. All Rights Reserved. 6 Amazon

    S3 Tablesとは Apache Icebergとは??
  6. Copyright © 2025 BeeX Inc. All Rights Reserved. 7 Amazon

    S3 Tablesとは https://speakerdeck.com/handy/20241220-s3-tablesnoshi-ifang-wojian-zheng-sitemita
  7. Copyright © 2025 BeeX Inc. All Rights Reserved. 8 Amazon

    S3 Tablesとは Apache Iceberg利用なし カタログ層 データ層 利用層 S3 Glue Data Catalog Athena Redshift ⚫従来のデータレイク構成 • データ層→S3上に格納されたCSVやParquet等 • カタログ層→Glueで管理されるメタデータ • 利用層→Glueカタログ経由でデータを取得 ⚫データ層はファイルのためツラミが多かった • レコードレベルの操作が難しい • スキーマ変更、データ型変更に追従負荷が高い • 利用時にパーティションを意識する必要がある
  8. Copyright © 2025 BeeX Inc. All Rights Reserved. 9 Amazon

    S3 Tablesとは Apache Iceberg利用あり カタログ層 メタデータ層 利用層 Glue Data Catalog Athena Redshift データ層 S3 メタデータファイル データファイル ⚫Icebergを利用したデータレイク構成 • データ層→S3上に格納されたParquet等 • メタデータ層→ S3上に格納されたjson等 • カタログ層→Glueで管理されるメタデータ • 利用層→Glueカタログ経由でデータを取得 ⚫Icebergによってメタデータ層が追加される • 3種類のファイルで管理される • metadata file→Tableやmanifest list情報を管理 • manifest list→snapshot構成等を管理 • manifest file→データファイル情報を管理 ⚫メタデータ層でファイルの管理やアクセスを 効率化することで柔軟性を高めている
  9. Copyright © 2025 BeeX Inc. All Rights Reserved. 10 Amazon

    S3 Tablesとは Apache Iceberg利用あり カタログ層 メタデータ層 利用層 Glue Data Catalog Athena Redshift データ層 S3 メタデータファイル データファイル ⚫Icebergを利用したデータレイク構成 • データ層→S3上に格納されたParquet等 • メタデータ層→ S3上に格納されたjson等 • カタログ層→Glueで管理されるメタデータ • 利用層→Glueカタログ経由でデータを取得 ⚫Icebergによってメタデータ層が追加される • 3種類のファイルで管理される • metadata file→Tableやmanifest list情報を管理 • manifest list→snapshot構成等を管理 • manifest file→データファイル情報を管理 ⚫メタデータ層でファイルの管理やアクセスを 効率化することで柔軟性を高めている この機能を提供するのが Apache Iceberg
  10. Copyright © 2025 BeeX Inc. All Rights Reserved. 11 Amazon

    S3 Tablesとは Apache Iceberg利用あり カタログ層 メタデータ層 利用層 Glue Data Catalog Athena Redshift データ層 S3 メタデータファイル データファイル ⚫Icebergを利用したデータレイク構成 • データ層→S3上に格納されたParquet等 • メタデータ層→ S3上に格納されたjson等 • カタログ層→Glueで管理されるメタデータ • 利用層→Glueカタログ経由でデータを取得 ⚫Icebergによってメタデータ層が追加される • 3種類のファイルで管理される • metadata file→Tableやmanifest list情報を管理 • manifest list→snapshot構成等を管理 • manifest file→データファイル情報を管理 ⚫メタデータ層でファイルの管理やアクセスを 効率化することで柔軟性を高めている Icebergに対応したサービスやツールから Icebergテーブルを構築すると利用できる Athena,Glue,Redshift,EMR,Python…etc
  11. Copyright © 2025 BeeX Inc. All Rights Reserved. 12 Amazon

    S3 Tablesとは Apache Iceberg利用あり カタログ層 メタデータ層 利用層 Glue Data Catalog Athena Redshift データ層 S3 メタデータファイル データファイル ⚫Icebergを利用したデータレイク構成 • データ層→S3上に格納されたParquet等 • メタデータ層→ S3上に格納されたjson等 • カタログ層→Glueで管理されるメタデータ • 利用層→Glueカタログ経由でデータを取得 ⚫Icebergによってメタデータ層が追加される • 3種類のファイルで管理される • metadata file→Tableやmanifest list情報を管理 • manifest list→snapshot構成等を管理 • manifest file→データファイル情報を管理 ⚫メタデータ層でファイルの管理やアクセスを 効率化することで柔軟性を高めている Icebergではデータが変更される度にファイルが作 成されるため、次のような問題が発生する ・使われないファイルの増加 ・パフォーマンス劣化 ・ストレージコストの増加
  12. Copyright © 2025 BeeX Inc. All Rights Reserved. 13 Amazon

    S3 Tablesとは Apache Iceberg利用あり カタログ層 メタデータ層 利用層 Glue Data Catalog Athena Redshift データ層 S3 Tables メタデータファイル データファイル ⚫Icebergを利用したデータレイク構成 • データ層→S3上に格納されたParquet等 • メタデータ層→ S3上に格納されたjson等 • カタログ層→Glueで管理されるメタデータ • 利用層→Glueカタログ経由でデータを取得 ⚫Icebergによってメタデータ層が追加される • 3種類のファイルで管理される • metadata file→Tableやmanifest list情報を管理 • manifest list→snapshot構成等を管理 • manifest file→データファイル情報を管理 ⚫メタデータ層でファイルの管理やアクセスを 効率化することで柔軟性を高めている S3 Tablesを利用することでIcebergテーブルの 最適化が自動で行われる また新しくS3バケットを用意する必要がない
  13. Copyright © 2025 BeeX Inc. All Rights Reserved. 15 データレイクの課題の具体例

    ⚫従来のデータレイクには次のような課題があった • レコードレベルの操作が難しい • スキーマ変更、データ型変更に追従負荷が高い • 利用時にパーティションを意識する必要がある 等 →実際に発生しうる課題を検証して確認してみた
  14. Copyright © 2025 BeeX Inc. All Rights Reserved. 16 データレイクの課題の具体例

    ⚫検証構成(従来構成) • S3は変換前データと変換後データを格納するバケットを用意する • Glueを利用してCSVからParquet変換を行う • AthenaからGlue Data Catalog経由でS3上のデータをクエリする AWS Cloud S3(変換前) User S3(変換後) Athena Glue Job Glue Crawler Glue Crawler Glue Data Catalog (Parquet変換) (クエリ)
  15. Copyright © 2025 BeeX Inc. All Rights Reserved. 17 データレイクの課題の具体例

    ⚫パターン1 正常系データの場合 s3tables-demo-20251115 raw table1 year=2024 month=11 day=12 day=13 day=14 data.csv data.csv data.csv Parquet変換後データカタログ Athenaクエリ確認結果
  16. Copyright © 2025 BeeX Inc. All Rights Reserved. 18 データレイクの課題の具体例

    ⚫パターン1 正常系データの場合 スキャンデータは 2.92 KB スキャンデータは 0.93 KB クエリ: select * from temperature_sensors_1_tab; クエリ: select * from temperature_sensors_1_tab where year='2024' and month='11' and day='12';
  17. Copyright © 2025 BeeX Inc. All Rights Reserved. 19 データレイクの課題の具体例

    ⚫パターン1 正常系データの場合 スキャンデータは 2.92 KB スキャンデータは 0.93 KB クエリ: select * from temperature_sensors_1_tab; クエリ: select * from temperature_sensors_1_tab where year='2024' and month='11' and day='12'; コストやパフォーマンスを考えると必須だが、 利用ユーザー全員に物理構成を意識して クエリさせるのはハードルが高い
  18. Copyright © 2025 BeeX Inc. All Rights Reserved. 20 データレイクの課題の具体例

    ⚫パターン2 想定とは異なるレコードが含まれている場合 timestamp,device_id,location,temperature_celsius,humidity_percent,battery_level,status 2024-11-13 00:00:00,TH-001,warehouse_a_zone1,22.3,45.5,93,normal 2024-11-13 00:00:00,TH-002,warehouse_a_zone2,22.9,44.1,86,normal 2024-11-13 00:00:00,TH-003,warehouse_a_zone3,ERROR,SENSOR_ERROR,LOW,1 2024-11-13 00:00:00,TH-004,warehouse_b_zone1,24.0,42.4,76,normal 2024-11-13 00:00:00,TH-005,warehouse_b_zone2,22.7,44.6,83,normal 2024-11-13 06:00:00,TH-001,warehouse_a_zone1,21.6,47.1,93,normal temperature_celsius: "ERROR" (数値であるべきところに文字列) humidity_percent: "SENSOR_ERROR" (数値であるべきところに文字列) battery_level: "LOW" (整数であるべきところに文字列) status: "1" (文字列"normal"/"warning"であるべきところに数値) 以下のような想定外データが含まれているケース
  19. Copyright © 2025 BeeX Inc. All Rights Reserved. 21 データレイクの課題の具体例

    ⚫パターン2 想定とは異なるレコードが含まれている場合 day_12 day_13 day_14 複数のデータ型と推察される場合は自動 で”string”が設定され、Prefix単位で テーブルが作成される =day_13のファイル調査が必要 変換前S3のクローリング後 結果
  20. Copyright © 2025 BeeX Inc. All Rights Reserved. 22 データレイクの課題の具体例

    ⚫パターン3 連携途中でデータ型が変更された場合 timestamp,device_id,location,temperature_celsius,humidity_percent,battery_level,status 2024-11-13 12:00:00,TH-003,warehouse_a_zone3,23.8,43.5,89.0,0 2024-11-13 12:00:00,TH-004,warehouse_b_zone1,26.0,39.5,75.0,2 2024-11-13 12:00:00,TH-005,warehouse_b_zone2,24.7,41.6,82.0,0 2024-11-13 18:00:00,TH-001,warehouse_a_zone1,T23.4,43.8,92.5,0 2024-11-13 18:00:00,TH-002,warehouse_a_zone2,T24.0,42.4,85.5,0 2024-11-13 18:00:00,TH-003,warehouse_a_zone3,T22.7,45.1,89.5,0 temperature_celsius: Float型(22.5) battery_level: Integer型(95) status: String型("normal", "warning") temperature_celsius: String型("T23.4") battery_level: Float型(92.0, 92.5など) status: Integer型(0=normal, 1=warning, 2=error) 2024-11-13 18:00分から 以下のようにデータ型が変わるケース
  21. Copyright © 2025 BeeX Inc. All Rights Reserved. 23 データレイクの課題の具体例

    ⚫パターン3 連携途中でデータ型が変更された場合 day_12 day_13 day_14 特定列が複数のデータ型を持つParquet ファイルが混在しているため、Prefix単位 でテーブルが作成される =過去データを新しいデータ型で 再アップ等の対応が必要になる 変換後S3のクローリング後 結果
  22. Copyright © 2025 BeeX Inc. All Rights Reserved. 24 データレイクの課題の具体例

    ⚫検証構成(従来構成) • S3は変換前データと変換後データを格納するバケットを用意する • Glueを利用してCSVからParquet変換を行う • AthenaからGlue Data Catalog経由でS3上のデータをクエリする AWS Cloud S3(変換前) User S3(変換後) Athena Glue Job Glue Crawler Glue Crawler Glue Data Catalog (Parquet変換) (クエリ) データ変更があることで想定外の形にカタログが更新 =ETLやクエリに影響が出る パーティションを意識しないクエリの実行 =パフォーマンスやコストに影響が出る
  23. Copyright © 2025 BeeX Inc. All Rights Reserved. 26 S3

    Tablesを利用するデータレイク構成を考える ⚫S3 Tablesを利用したデータレイク構成 • 従来のデータレイクの課題を解決するためにS3 Tablesを導入したい • そのためにはどのような構成が適切なのか考えてみる AWS Cloud User Athena (クエリ)
  24. Copyright © 2025 BeeX Inc. All Rights Reserved. 27 S3

    Tablesを利用するデータレイク構成を考える ⚫S3 Tablesを利用したデータレイク構成 • まず最初に思いつくのがデータ変換後のS3を置き換えるケース • この場合データクエリ時に物理パーティションを意識しなくてもよいメリッ トがある • ただし、変換前データが変更された場合の影響は残る AWS Cloud S3(変換前) User Athena Glue Job Glue Crawler Glue Data Catalog (Parquet変換) (クエリ) Lake Formation S3 Tables (自動紐付け)
  25. Copyright © 2025 BeeX Inc. All Rights Reserved. 28 S3

    Tablesを利用するデータレイク構成を考える ⚫S3 Tablesを利用したデータレイク構成 • 次にデータ変換前後どちらのS3も置き換えるケース • この場合データ変換前データの変更にも追従が可能になる • ただし、データ投入時にIceberg仕様に対応した連携の仕組みが必要 ※PyIcebergライブラリ等を使用したPythonスクリプトなど AWS Cloud User Athena Glue Job Glue Data Catalog (Parquet変換) (クエリ) Lake Formation S3 Tables (自動紐付け) S3 Tables (自動紐付け)
  26. Copyright © 2025 BeeX Inc. All Rights Reserved. 29 S3

    Tablesを利用するデータレイク構成を考える ⚫S3 Tablesを利用したデータレイク構成 • 次にデータ変換前後どちらのS3も置き換えるケース • この場合データ変換前データの変更にも追従が可能になる • ただし、データ投入時にIceberg仕様に対応した連携の仕組みが必要 ※PyIcebergライブラリ等を使用したPythonスクリプトなど AWS Cloud User Athena Glue Job Glue Data Catalog (Parquet変換) (クエリ) Lake Formation S3 Tables (自動紐付け) S3 Tables (自動紐付け) IcebergテーブルはAWS CLIでのS3アップロードのような 手軽なデータ投入方法がないことが難点
  27. Copyright © 2025 BeeX Inc. All Rights Reserved. 30 S3

    Tablesを利用するデータレイク構成を考える ⚫S3 Tablesを利用したデータレイク構成 • AWSへのファイル連携の手軽さを残しつつS3 Tablesのメリットも活かすの であれば、一度汎用バケットを介してイベント通知でデータを取り込む構成 も考えられる • Glue CrawlerからS3上のファイルに参照させないため、データソース側の変 更による影響を少なくすることができる AWS Cloud S3(一時保管) User Athena Glue Job (クエリ) Lake Formation S3 Tables (加工後) Lambda S3 Tables (加工前) (変換処理) (イベント通知)
  28. Copyright © 2025 BeeX Inc. All Rights Reserved. 32 まとめ

    ⚫S3 TablesはS3+Icebergのマネージドサービス ⚫従来のS3+Glue中心のデータレイクでは、データソース側の更新への追従がか なり大変だった ⚫S3 Tablesが出たことでデータレイクにおけるIcebergの利用ハードルが下がっ た(のではないかと思う) ※Lake Formationがなければ ⚫まだIcebergテーブルへのデータ投入時の手間やGlueのVisual ETLのGUI操作に 対応していないなどの点は今後に期待