Slide 1

Slide 1 text

Amazon Athena for Apache Sparkを 使ってデータ分析をしよう︕ 2023/7/19 データアナリティクス事業本部 インテグレーション部 機械学習チーム 鈴⽊ 那由太 1

Slide 2

Slide 2 text

⽬次 2 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために ※ ご感想は #devio2023 を⼊れてツイートしてください︕

Slide 3

Slide 3 text

3 ⾃⼰紹介 名前︓鈴⽊ 那由太(スズキ ナユタ) 所属︓データアナリティクス事業本部 インテグレーション部 機械学習チーム 担当︓システムエンジニア 現在の業務︓データ分析基盤構築 機械学習を使⽤したソリューション開発 受賞歴︓2023 Japan AWS Top Engineers (Analytics) 2022 APN AWS Top Engineers (Analytics) Osaka

Slide 4

Slide 4 text

⽬次 4 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために

Slide 5

Slide 5 text

このセッションの背景 5 • re:Invent2022でAmazon Athena for Apache Sparkが登場した。 Apache Sparkを実⾏できるサービスの使い分けに興味を持った。 • データマート作成や、機械学習の特徴量作成のための、インタラクティブな分析を ⾏う機会が多数あった。 ⼤規模なデータに対してより効率よく分析を進めるための仕組みを求めていたので、 インタラクティブな分析を強調するこのサービスについて技術検証をしている。 このサービスについて、調査・検証の中で分かった 特徴や⽴ち位置についてご共有したい。

Slide 6

Slide 6 text

このセッションで話したいこと 6 • データレイクのデータに対して⾼いアジリティで分析を進められるインタラクティブな 分析インターフェースがAWSで登場した。 • これが『Amazon Athena for Apache Spark』 • データ分析⽤の分散処理システムや、ETL・ELTのジョブの準備なしで、 エンドユーザーが直接⼤規模なデータを分析できるようになった。 • このサービスにより、データ分析基盤構築の幅がどのように広がるか考えたい。

Slide 7

Slide 7 text

⽬次 7 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために

Slide 8

Slide 8 text

8 データ分析課題の例 以下の課題について考えてみましょう。 精度の⾼い機械学習モデルを開発するため、良い特徴量を作りたい。 データ分析基盤として、どんな仕組みが必要か︖

Slide 9

Slide 9 text

9 データ分析基盤とは 分析⽤にデータを収集し、活⽤しやすい形式に加⼯して、 保管・提供するシステム

Slide 10

Slide 10 text

10 特徴量作成から活⽤の2ステップ どんなデータの傾向があるかを探り、機械学習モデルの学習に有⽤な特徴量を作成する。 特徴量は、データマートとして継続的に作成するためのシステムを作成し、運⽤される。 データサイエンティスト 傾向の確認 S3バケット (⽣データ) マート作成処理 S3バケット (⽣データ) S3バケット (データマート) Amazon Athena AWS Glue データサイエンティスト 活⽤ ※必要があれば匿名化など 最低限の加⼯をしておく ①データの探索 ②データの活⽤ ■ 特徴量作成の例

Slide 11

Slide 11 text

11 インテグレーションの例 Amazon Personalizeを活⽤したレコメンデーションの例 ETL処理 レコメンド⽣成処理 データソース ECサイト等 リアルタイムレコメンド (APIリクエスト) バッチレコメンド (S3に結果をまとめて格納) Amazon API Gateway バッチレコメンド結果の⼀括取得 (APIリクエスト) AI/MLのコア要素以外に必要な機能をサービスインテグレーションで解決 AI/MLのコア要素 AWS Cloud レコメンデーションモデルの継続的な学習・推論のため、データソースからデータマートへの ETL処理が開発・運⽤される。

Slide 12

Slide 12 text

12 ⼤規模なデータを分析する際の難しさ ⽣データが巨⼤なために、分析⽤の分散処理システムやETLジョブが必要な場合がある。 このリソースは、データエンジニアが作成することが多い。 データサイエンティスト 傾向の確認 S3バケット (⽣データ) データエンジニア マート作成処理 S3バケット ( ⽣データ ) S3バケット (データマート) Amazon Athena AWS Glue データサイエンティスト 活⽤ ※必要があれば匿名化など 最低限の加⼯をしておく ①データの探索 ②データの活⽤ ■ 特徴量作成の例 データが⼤きいと分析に時間が かかったり、分析⽤リソースの メモリに載らないなどの課題が ある。 データ分析基盤の データエンジニアの 協⼒が必要

Slide 13

Slide 13 text

13 分析⽤リソース開発のボトルネック データが⼤規模な場合に分析⽤の分散処理システムやETL処理システム開発は、 データ分析基盤側に依頼することが多い。 データエンジニア マート作成処理 S3バケット (データレイク) S3バケット (データマート) Amazon Athena AWS Glue エンドユーザー1 要求1 ②データの活⽤ エンドユーザー2 ・・・ 要求2 エンドユーザー数に対して、 データエンジニアの数の⽅が 少ないことが多く、ボトルネックと なりやすい。 データエンジニアがボトルネックになるケースがある。

Slide 14

Slide 14 text

14 開発のボトルネック部分 Amazon Personalizeを活⽤したレコメンデーションの例 ETL処理 レコメンド⽣成処理 データソース ECサイト等 リアルタイムレコメンド (APIリクエスト) バッチレコメンド (S3に結果をまとめて格納) Amazon API Gateway バッチレコメンド結果の⼀括取得 (APIリクエスト) AI/MLのコア要素以外に必要な機能をサービスインテグレーションで解決 AI/MLのコア要素 AWS Cloud この部分がボトルネックに なりやすい︕

Slide 15

Slide 15 text

15 エンドユーザーが分析したいデータ Amazon Personalizeを活⽤したレコメンデーションの例 ETL処理 レコメンド⽣成処理 データソース ECサイト等 リアルタイムレコメンド (APIリクエスト) バッチレコメンド (S3に結果をまとめて格納) Amazon API Gateway バッチレコメンド結果の⼀括取得 (APIリクエスト) AI/MLのコア要素以外に必要な機能をサービスインテグレーションで解決 AI/MLのコア要素 AWS Cloud 分析したいデータはここなので、 とりあえずこのデータを直接⾒たい︕

Slide 16

Slide 16 text

Amazon Athena for Apache Spark 16 AthenaノートブックとPySparkを使って、巨⼤なデータに対しても インタラクティブな分析ができるサーバーレスなマネージドサービス!

Slide 17

Slide 17 text

いちおしポイントは︖ 17 Amazon Athena for Apache Spark AWS Cloud S3 バケット (データ) ⼿軽に起動できるノートブックだけで、 ⼤規模なデータに対してインタラクティブに分析ができる︕︕︕ ウォームスタンバイなしで、 セルを実⾏すると直ちに 処理が開始される︕ Athenaノートブック

Slide 18

Slide 18 text

よくある分析構成の例と課題 18 • ノートブックサーバーや BIダッシュボードサーバーで処理が終わらない・ダウンしてしまう。 • Athenaで処理した結果をサーバーで取得して開くのが⾯倒。 S3 バケット (マート層) Amazon Athena AWS Cloud S3 バケット (レイク層) User ノートブックサーバー ⾮常に効率が悪い。 BIダッシュボード サーバー User 課題 構成例

Slide 19

Slide 19 text

代替の分析構成例 19 • Amazon Athena for Apache SparkでS3のデータを分析できる。 • ユーザーごとにコンピュートが⽤意されるので、誰かが重たいクエリを実⾏して マシンが重くなるということもない。 • サーバー保守も不要。 Amazon Athena for Apache Spark AWS Cloud S3 バケット (レイク・マート層) User User 構成例 良い点

Slide 20

Slide 20 text

⽬次 20 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために

Slide 21

Slide 21 text

Amazon Athena for Apache Sparkについて 21 • re:Invent2022にて発表されたAthenaの新機能 • ⼤規模なデータに対するインタラクティブな分析を⽬的としている • AthenaノートブックからPySparkが利⽤できる

Slide 22

Slide 22 text

Amazon Athena for Apache Sparkのここがすごい︕ 22 • 数クリックで起動するAthenaノートブックで、⼤規模なデータでも分析可能︕ • ノートブックのシェアで、分析処理や説明・考察の共有ができる。 • インタラクティブな処理実⾏に最適化されたApache Sparkが利⽤できる。 ノートブックから、セル実⾏後数秒で処理が実⾏開始される。 (ウォームスタンバイなし) • Glueデータカタログのテーブルへの読み込み・書き込みがシームレスにできる。

Slide 23

Slide 23 text

Amazon Athenaについて 23 • AWS Glueと統合されたインタラクティブなクエリサービス。 • Athena SQLでは、Presto・Trinoの⼀部関数を利⽤してSQLで分析できる。(左) • Amazon Athena for Apache SparkではPySparkとAthenaノートブックを サポートしている。(右)

Slide 24

Slide 24 text

PySparkについて 24 https://spark.apache.org/docs/latest/api/python/index.html より2023/06/10に引⽤ • Apache SparkのPython向けのAPI • Pythonを使⽤して、リアルタイムに⼤規模なデータに対して処理を実⾏できる。 • Amazon Athena for Apache SparkではMLlibはサポートされていな い。(本発表時点)

Slide 25

Slide 25 text

Apache Sparkの動作イメージ 25 https://spark.apache.org/docs/latest/cluster-overview.html より2023/06/10に引⽤ • Driver Programがデータに対する操作を最適化してタスクとし、Worker Nodeでタスクが実⾏される。 • アプリケーションとして使う分にも、遅延評価やボトルネックに関する多少の慣れと ノウハウは必要だが、⾮常に簡単に⼤規模なデータを分散処理できる。

Slide 26

Slide 26 text

⽬次 26 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために

Slide 27

Slide 27 text

リソースの作成イメージ 27 ワークグループ ワークグループ Role Role Athena ノートブック セッション ノートブック ノード ドライバ ノード ワークグループ Role Athena ノートブック ワークグループ Role Athena ノートブック セッション ノートブック ノード ドライバ ノード ワーカー ノード 実行 完了 セッション 開始 ノートブック 作成 セッション 終了

Slide 28

Slide 28 text

ワークグループの作成 28 • ワークグループから分析エンジンを選ぶ。 • 分析エンジンでApache Sparkを選択する。

Slide 29

Slide 29 text

アクセス権限の設定 29 • AthenaのワークグループにIAMロールをアタッチして設定する。 • IAMロールの作成はサンプルの定義がある。 • ただし、Glueデータカタログなど他のサービスと連携したいときは権限の追加が必要。 • サンプルノートブックをオンにしたときの追加のアクセス許可の詳細を参考にするとよい。

Slide 30

Slide 30 text

ノートブックの作成・起動 30 • ノートブックエディタから、ノートブックを作成するとセッションが開始される。 初期パラメータを設定できる。 • セッションについて設定を変更する場合は、Sessionメニューから変更する。

Slide 31

Slide 31 text

パラメータ設定 31 • 各ノードのサイズをDPU単位で変更可能です。 • 1DPU: • 4 個の vCPU • 16 GB のメモリ • 最⼤同時実⾏数については、個⼈的には意図がない 場合は、最初は⼩さめにしておくと良いかもしません。

Slide 32

Slide 32 text

セッションの停⽌ 32 • セッションはSessionメニューから明⽰的に停⽌ができる。 • セッションが停⽌しているかどうかは、ノートブックエクスプローラーから履歴が 確認できる。

Slide 33

Slide 33 text

実⾏結果の確認 33 • 実⾏結果はセッションの詳細から、セルの実⾏単位で確認できる。

Slide 34

Slide 34 text

⽬次 34 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために

Slide 35

Slide 35 text

AWS上のJupyter Notebook(互換)を使うサービス⽐較 35 # 案 所感 1 Athena for Apache Spark ⼤規模データのインタラクティブ分析に最適化されている。 2 Amazon SageMaker Studio インスタンスサイズが起動時に固定になる。 プロセッシングなどで処理は別コンテナにオフロードできるが、 単⼀インスタンスでの処理が想定されないデータ量の処理は難しい。 3 AWS Glue StudioのJupyter Notebook 基本的にはGlue Jobの開発⽤途となる。 4 Amazon EMR カスタマイズ性が⾼いが設定も難しい。インタラクティブな分析のためには、 Pre-initialized workersの準備が必要になるかも。 5 Amazon EC2でJupyter Labなどをホスト 構築・運⽤の難易度が⾼い。インスタンスサイズも固定。 • アドホックな分析⽤途としては、Amazon Athena for Apache Sparkか SageMaker Studioのどちらかが選択肢に挙がる。 • Amazon Athenaはマネージドで、Glueデータカタログとの連携も想定されている。 Sparkの起動も⾮常に速く、インタラクティブな分析に最適化されている。

Slide 36

Slide 36 text

これまでのAthena SQLよりもいいの︖ 36 • 個⼈的には以下のように考えています。 • Pythonの⽅が、SQLでは簡潔に書けない処理をより簡潔に書く表現⼒がある。 特に関数を使うことで⾏数を減らし、保守性を⾼めやすい。 • PySparkを使ったアプリケーション開発をするよりも、SQLを使った開発をする⽅が 難易度は低い。 • Pythonは既存のテスト⽤ライブラリを使うことでテストしやすい⾔語ではあるが、 SQLでもdbtなどのツールを使ってテストできる。 • ノートブックで分析処理を共有できる利点は⼤きい。 SQLファイルだけで分析内容を共有することはかなり⼯夫が必要だった。

Slide 37

Slide 37 text

⽬次 37 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために

Slide 38

Slide 38 text

想定するユースケース例 38 • アドホックなデータ分析⽤途で使⽤する⽤途をご提案します。 • データマート作成のための検証 • 既存データマートの元データに対するアドホックなデータ分析 • バッチ処理化したい場合は、AWS Glueのジョブにするのが良いと思います。

Slide 39

Slide 39 text

データマート作成のための検証 39 AWS Cloud S3バケット (レイク) Amazon Athena (Athena SQL) Amazon Athena for Apache Spark ・マート作成のための検証 S3バケット (マート) AWS Cloud User AWS Lake Formation User Data Catalog Data Catalog • レイク層の⽣データからデータマートを作成する際の概念実証をする。

Slide 40

Slide 40 text

既存データマートの元データに対するアドホックなデータ分析 40 • 既に作成したデータマートを使い、ビジネス指標のモニタリングや機械学習予測を ⾏っているようなケース。 • 傾向の変化や性能の劣化を確認した際に、⽣データ(レイク層)のデータを使って アドホックに原因調査をする。 ダッシュボードや機械学習 モデルの挙動の原因を 改めて確認したい。

Slide 41

Slide 41 text

⽬次 41 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために

Slide 42

Slide 42 text

権限制御 42 Amazon Athena for Apache Spark AWS Glue Data Catalog S3 Bucket Role User AWS Cloud Role • ノートブックで実⾏されるSparkアプリケーションの権限はワークグループに設定した IAMロールで制御する。 • どのユーザーがどのワークグループにアクセスしてよいかは、IAMユーザーおよび スイッチしているIAMロールのポリシーにて制御する。

Slide 43

Slide 43 text

料⾦⾯ 43 https://aws.amazon.com/jp/athena/pricing/ https://aws.amazon.com/jp/sagemaker/pricing/ ※参考︓SageMaker Studio • 1DPU/時あたり0.50USD(東京リージョン) • 別リージョンでは価格が異なり、最も安いリージョンで現状0.35USD • ドライバは常に起動し、処理に応じてワーカーノード分も課⾦される。 • SageMaker Studioで1DPUに相当するインスタンスタイプだと0.261USD/時〜

Slide 44

Slide 44 text

まとめ 44 • 昨年12⽉に発表されたAmazon Athena for Apache Sparkについて紹介した。 • 簡単に開始でき、エンドユーザーが⼤規模なデータをインタラクティブに分析できるようになる、 新しい⽴ち位置のサービスだと考えている。 • AthenaノートブックでPySparkの処理や説明を記述でき、分析内容を簡単に 共有することができる。 • データマートの検証や、良い特徴量の探索のような、分析内容が毎回異なり、 トライ&エラーを⾼速で繰り返す分析作業を強⼒にサポートしてくれるサービスと考えられる。

Slide 45

Slide 45 text

45