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

Amazon Athena for Apache Sparkを使ってデータ分析をしよう!

Amazon Athena for Apache Sparkを使ってデータ分析をしよう!

DevelopersIO 2023 大阪にて発表した資料になります。
https://dev.classmethod.jp/news/devio-2023-osaka/

Nayu T. S.

July 20, 2023
Tweet

More Decks by Nayu T. S.

Other Decks in Technology

Transcript

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

    View Slide

  2. ⽬次 2

    はじめに(セッション背景など)

    データ分析における課題

    Amazon Athena for Apache Sparkの紹介

    Amazon Athena for Apache Sparkの利⽤イメージ

    ほかのサービスとの⽐較

    想定するユースケース例

    使ってみるために
    ※ ご感想は #devio2023 を⼊れてツイートしてください︕

    View Slide

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

    View Slide

  4. ⽬次 4

    はじめに(セッション背景など)

    データ分析における課題

    Amazon Athena for Apache Sparkの紹介

    Amazon Athena for Apache Sparkの利⽤イメージ

    ほかのサービスとの⽐較

    想定するユースケース例

    使ってみるために

    View Slide

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

    View Slide

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

    View Slide

  7. ⽬次 7

    はじめに(セッション背景など)

    データ分析における課題

    Amazon Athena for Apache Sparkの紹介

    Amazon Athena for Apache Sparkの利⽤イメージ

    ほかのサービスとの⽐較

    想定するユースケース例

    使ってみるために

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. ⽬次 20

    はじめに(セッション背景など)

    データ分析における課題

    Amazon Athena for Apache Sparkの紹介

    Amazon Athena for Apache Sparkの利⽤イメージ

    ほかのサービスとの⽐較

    想定するユースケース例

    使ってみるために

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  24. 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はサポートされていな
    い。(本発表時点)

    View Slide

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

    View Slide

  26. ⽬次 26

    はじめに(セッション背景など)

    データ分析における課題

    Amazon Athena for Apache Sparkの紹介

    Amazon Athena for Apache Sparkの利⽤イメージ

    ほかのサービスとの⽐較

    想定するユースケース例

    使ってみるために

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  34. ⽬次 34

    はじめに(セッション背景など)

    データ分析における課題

    Amazon Athena for Apache Sparkの紹介

    Amazon Athena for Apache Sparkの利⽤イメージ

    ほかのサービスとの⽐較

    想定するユースケース例

    使ってみるために

    View Slide

  35. 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の起動も⾮常に速く、インタラクティブな分析に最適化されている。

    View Slide

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

    View Slide

  37. ⽬次 37

    はじめに(セッション背景など)

    データ分析における課題

    Amazon Athena for Apache Sparkの紹介

    Amazon Athena for Apache Sparkの利⽤イメージ

    ほかのサービスとの⽐較

    想定するユースケース例

    使ってみるために

    View Slide

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

    View Slide

  39. データマート作成のための検証 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
    • レイク層の⽣データからデータマートを作成する際の概念実証をする。

    View Slide

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

    View Slide

  41. ⽬次 41

    はじめに(セッション背景など)

    データ分析における課題

    Amazon Athena for Apache Sparkの紹介

    Amazon Athena for Apache Sparkの利⽤イメージ

    ほかのサービスとの⽐較

    想定するユースケース例

    使ってみるために

    View Slide

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

    View Slide

  43. 料⾦⾯ 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/時〜

    View Slide

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

    View Slide

  45. 45

    View Slide