Slide 1

Slide 1 text

Athena と Step Functions で 簡単 ETL オーケストレーション 2024年6⽉12⽇(⽔) クラスメソッド株式会社 鈴⽊ 那由太 1 Midosuji.Tech #1

Slide 2

Slide 2 text

名前:鈴木 那由太(スズキ ナユタ) 所属:クラスメソッド株式会社 データアナリティクス事業本部 インテグレーション部 機械学習チーム 現在の業務: 機械学習用途のデータ分析基盤構築 機械学習システム構築 X:@nayuyu_ns 2 自己紹介 Osaka

Slide 3

Slide 3 text

3 今⽇の内容 Amazon AthenaとAWS Step Functionsを組み合わせると、 AWSだけで簡単にETL処理(データの読み出し・加⼯・書き込み)が できて便利︕ • Athenaで、SQLで簡単にビッグデータ処理が実⾏できる。 (本来はGlueやPySparkの使い⽅を覚える必要があるが、今回の構成では不要。) • Step FunctionsのAPI統合を使うことでワークフロー化できる。 ビジネス指標のモニタリングや機械学習モデルの⼊⼒⽤に ⽇々集計しておく必要がある。 AWS Cloud 検索実行用 ステートマシン 集計 元データ リクエスト 集計後データ イメージ

Slide 4

Slide 4 text

4 今⽇の内容 Amazon AthenaとAWS Step Functionsを組み合わせると、 AWSだけで簡単にETL処理(データの読み出し・加⼯・書き込み)が できて便利︕ • Athenaで、SQLで簡単にビッグデータ処理が実⾏できる。 (本来はGlueやPySparkの使い⽅を覚える必要があるが、今回の構成では不要。) • Step FunctionsのAPI統合を使うことでワークフロー化できる。 という話がしたかったが、データエンジニアリングの要件は近年より多くなってきており、 ほかにも考えることがある。(DMBOKで議論されているデータマネジメントなど) • データリネージ • データ品質 • などなど… • 簡単構成を例に、なにがどう便利か、 より良くするにはなにが必要か、ということをお話ししたい。

Slide 5

Slide 5 text

5 Amazon Athena • SQLを書くだけでだれでも簡単にインタラクティブなビッグデータ処理が実⾏できる フルマネージドな ”分析” サービス。 • S3などからデータを検索・集計できる。

Slide 6

Slide 6 text

6 AWS Step Functions • フルマネージドでサービスのオーケストレーションができる • さまざまなAWSのサービスのAPIと統合されている(ステートマシンから呼び出せる) • 使いやすいビジュアルエディタからステートマシンの作成ができる

Slide 7

Slide 7 text

7 簡単構成のイメージ Step Functionsを使うことで簡単にAthenaでクエリを実⾏するワークフローを構築できる。 • S3に配置したSQLファイルをステートマシンが直接取得する • 取得したSQLファイルの内容を、ステートマシンから直接実⾏する ここにSQLをハードコードしなくても、パラメータで S3から読み取ったものをセットできる。 以前はLambdaを間にはさむものが多かったが、API統合 を使うことでStep Functionsだけでできる。

Slide 8

Slide 8 text

8 ステートマシンからAthenaへのクエリの実⾏ ステートマシンからAthenaへのクエリを同期的に実⾏できる。 ステートマシン定義内でStartQueryExecutionを実⾏する際に、.syncをつけるだけ。 ※ https://docs.aws.amazon.com/step-functions/latest/dg/connect-athena.html より2024/06/06に引用 非同期実行だと、クエリ終了を待つループが 必要になるが、同期実行であればシンプルな ステートマシンにできる。

Slide 9

Slide 9 text

9 この構成でできること・できないこと できること • マネージドサービスだけでETLが実装できる。 • SQLが書ければビッグデータ処理が実装できる。(PySparkなど書かなくて良い) できないこと ① SQLで参照するテーブルの依存関係(データリネージ)は取れない。 ② 単体ではデータ品質はチェックできない。 ③ パーティション分割したテーブルの際に、過去分のデータ再作成が難しい。 (100パーティションまでのクォータ) ※⽤語については次のスライドで補⾜します。

Slide 10

Slide 10 text

10 ⽤語の補⾜ • データリネージ • データがどの組織を流れ、どのように変換されるかを表す情報・図。 • データ品質 • データが信頼できるかの指標。データをビジネス活⽤する際にはデータが⾼品質である必要がある。 例えば、あるカラムが仕様の範囲に収まっているか、決められたバリエーションの値を取っているか、など。 • パーティション(Athenaにおける) • AthenaでS3からスキャンされるデータ量を削減するための仕組み。 • 例えば、年⽉カラムyyyymmをパーティションキーに設定しておき、where句で指定することで、 全データではなくその年⽉のデータのみをスキャンできる。 • パーティションを年⽉⽇カラムyyyymmddにすると、100⽇分の再作成でクォータに達してしまうため、 ⼯夫が必要になる。

Slide 11

Slide 11 text

11 ①(データリネージ)の代替策 dbtを使うことでデータリネージ・ドキュメントを⽣成できる。 • ブラウザから閲覧できるドキュメントを⽣成できる • Athena向けのアダプターはコミュニティー版のdbt-athena-communityだけ

Slide 12

Slide 12 text

12 ②(データ品質管理)の代替策 S3・Redshift向けにGlue Data Qualityを使⽤できる。 値の範囲やバリエーションなど、ルールを設定しておきその通りになっているかチェックできる。 引用:https://dev.classmethod.jp/articles/20-min-overview-aws-glue-data-quality/

Slide 13

Slide 13 text

13 ③(パーティション制限)の代替策 クォータにより、⼀度に100パーティションまでしか更新できない。 制限を超えないようなハンドリングをするアプリケーション(例: dbt-athena)を使うことも できるが、データウェアハウス(Redshiftなど)を選定した⽅が運⽤⾯で楽なこともあった。 ※ https://aws.amazon.com/jp/blogs/big-data/build-a-lake-house-architecture-on-aws/ より2024/06/06に引用 AWS Cloud QuickSight Athena S3 SageMaker AWS Step Functions workflow S3 Athenaにデータレイクの処理を任せるよりは、 ML・BIが消費するマートを洗い替えで作るなどの 用途が向いていると思った。 より複雑な管理が必要なものはRedshiftに任せた方が よい。

Slide 14

Slide 14 text

14 まとめ • データ消費に近い管理が簡単なデータについては、Athena・Step Functionsで⼿軽に ETLの仕組みを作ることができる。 • データリネージやSQLのテスト、ドキュメントの⽣成などを使いたい場合は、例えばdbtなどが 利⽤できる。 • S3・Redshiftに対するデータ品質チェックを⾏いたい場合は、AWSだとGlue Data Qualityを 使うことができる。

Slide 15

Slide 15 text

15