[動画公開] Amazon Athena (Iceberg) x dbt ではじめるデータ分析! #ちょっぴりDD
データアナリティクス事業本部のコンサルティングチームの石川です。AWS主催のオンラインカンファレンス、ちょっぴり DiveDeep する AWS の時間にて「Amazon Athena (Iceberg) x dbt ではじめるデータ分析!」というテーマにて登壇しました。セッション動画と資料が公開されました。
セッション概要
コンサルティングチームでは、Amazon RedshiftやSnowflakeと「dbt」を用いたサーバレスなデータプラットフォームである「dbt-template」ソリューションと、コンサルティングサービスをご提供しております。今回は、「dbt-template」のAmazon Athena対応で得られた技術調査の結果と、テーブルフォーマット「Iceberg」と「dbt」対応について、ちょっぴりDiveDeepしました。
前半は、2023/04にGAになった現在イチオシAmazon Athenaのテーブルフォーマット「Iceberg」のご紹介、後半はdbtをAmazon Athenaに対応させるアダプタ「dbt-athena」を紹介します。
セッション動画(約16分)
セッション資料
従来のデータレイクの技術課題
Iceberg、Hudi、Delta Lakeは、これらは技術課題に対して解決策を提供しています。
- スモールファイルによるパフォーマンス劣化
- OPTIMIZEによるデータのコンパクション
- VACUUMによる不要なデータの削除
- データの編集・削除が苦⼿
- UPDATE、DELETE、MERGEのサポート
- 同時アクセス時の整合性を担保できない
- ACIDトランザクションのサポート
- データが追加・更新されると過去の状態が復元できない
- タイムトラベル機能による過去の時点のデータにアクセス
Amazon Athenaのテーブルフォーマット「Apache Iceberg」
- Amazon Athena(Iceberg)は、ACIDにデータを更新(INSERT、UPDATE、DELETE、MERGE)、タイムトラベル、オプティマイズの操作を可能
- UPSERT(DELETE/INSERT)やMERGEといった差分更新が可能になった
- MERGE INTOはトランザクションであり、Athena エンジンバージョン 3 でのみサポート
- Icebergは、Glueデータカタログによるオプティミスティックロック
- Amazon Athena(Iceberg)は、パーティションをカラム単位ではなく、キー情報の一部分を用いてパーティションできる"Hidden Partition”
- Apache HudiやDelta Lakeは、SELECTのみ(今後に期待)
dbt(data build tools)とは
- データモデルをSQLで構築、ビジネスロジックを実装
- ビジネスロジックの依存関係からDAGを自動生成
- DAGに基づいてデータ変換の並列で実行、データリネージ
- データモデルに基づいたデータカタログ
- コードベースのデータのテストを自動化
- コードのバージョン管理によるCI/CD
- マクロとref文により再利用可能なコード
なぜ、Amazon Athena(Iceberg) x dbt なのか?
- Amazon Athenaは、スキーマオンリードなので、ソースデータのロードは不要、常にライブデータをクエリできる
- Amazon Athenaは、パーティション化されたデータもPartition Projectionでよって直ちに読み込み可能
- Amazon Athenaは、ストレージとコンピューティングが分離されており、dbtは実行時に生成したDAGによる並列実行と相性が良い
現状の課題と代替案
- Icebergでは、サポートしていないデータ型が存在する
- データ型を置き換えることで解決!
- CTASでTIMESTAMP型がエラーになる
- 不具合ではなく、現行の仕様(今後に期待)
- string型などに変更による対処
- dbtからIcebergのhidden partitionでtruncate()関数を使用するとエラーになる
- Athenaからは問題なく使えるため、恐らくdbt-athenaアダプタ(Version 1.5.*)との不具合の可能性がある
- dbtではなく、事前にテーブルを作成することで問題を回避できる
最後に
本日のテーマ「Amazon Athena (Iceberg) x dbt 」でした。Amazon Athena と Apache Icebergの組み合わせ、控えめに言って、最高です!最新のAmazon Athenaは、SQLベースでデータ変換を構築、オーケストレーションするためのフレームワークである、「dbt」の強みを生かしたデータ変換が可能になりました。
Amazon Athena(Iceberg)は、従来の技術課題を解決、dbtとの組み合わせにおいて、データカタログやデータリネージをサーバレスでご提供します。