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/

Nayuta S.

July 20, 2023
Tweet

More Decks by Nayuta S.

Other Decks in Technology

Transcript

  1. ⽬次 2 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for

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

    Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために
  3. このセッションの背景 5 • re:Invent2022でAmazon Athena for Apache Sparkが登場した。 Apache Sparkを実⾏できるサービスの使い分けに興味を持った。

    • データマート作成や、機械学習の特徴量作成のための、インタラクティブな分析を ⾏う機会が多数あった。 ⼤規模なデータに対してより効率よく分析を進めるための仕組みを求めていたので、 インタラクティブな分析を強調するこのサービスについて技術検証をしている。 このサービスについて、調査・検証の中で分かった 特徴や⽴ち位置についてご共有したい。
  4. このセッションで話したいこと 6 • データレイクのデータに対して⾼いアジリティで分析を進められるインタラクティブな 分析インターフェースがAWSで登場した。 • これが『Amazon Athena for Apache

    Spark』 • データ分析⽤の分散処理システムや、ETL・ELTのジョブの準備なしで、 エンドユーザーが直接⼤規模なデータを分析できるようになった。 • このサービスにより、データ分析基盤構築の幅がどのように広がるか考えたい。
  5. ⽬次 7 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for

    Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために
  6. 11 インテグレーションの例 Amazon Personalizeを活⽤したレコメンデーションの例 ETL処理 レコメンド⽣成処理 データソース ECサイト等 リアルタイムレコメンド (APIリクエスト)

    バッチレコメンド (S3に結果をまとめて格納) Amazon API Gateway バッチレコメンド結果の⼀括取得 (APIリクエスト) AI/MLのコア要素以外に必要な機能をサービスインテグレーションで解決 AI/MLのコア要素 AWS Cloud レコメンデーションモデルの継続的な学習・推論のため、データソースからデータマートへの ETL処理が開発・運⽤される。
  7. 12 ⼤規模なデータを分析する際の難しさ ⽣データが巨⼤なために、分析⽤の分散処理システムやETLジョブが必要な場合がある。 このリソースは、データエンジニアが作成することが多い。 データサイエンティスト 傾向の確認 S3バケット (⽣データ) データエンジニア マート作成処理

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

    Amazon Athena AWS Glue エンドユーザー1 要求1 ②データの活⽤ エンドユーザー2 ・・・ 要求2 エンドユーザー数に対して、 データエンジニアの数の⽅が 少ないことが多く、ボトルネックと なりやすい。 データエンジニアがボトルネックになるケースがある。
  9. 14 開発のボトルネック部分 Amazon Personalizeを活⽤したレコメンデーションの例 ETL処理 レコメンド⽣成処理 データソース ECサイト等 リアルタイムレコメンド (APIリクエスト)

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

    バッチレコメンド (S3に結果をまとめて格納) Amazon API Gateway バッチレコメンド結果の⼀括取得 (APIリクエスト) AI/MLのコア要素以外に必要な機能をサービスインテグレーションで解決 AI/MLのコア要素 AWS Cloud 分析したいデータはここなので、 とりあえずこのデータを直接⾒たい︕
  11. いちおしポイントは︖ 17 Amazon Athena for Apache Spark AWS Cloud S3

    バケット (データ) ⼿軽に起動できるノートブックだけで、 ⼤規模なデータに対してインタラクティブに分析ができる︕︕︕ ウォームスタンバイなしで、 セルを実⾏すると直ちに 処理が開始される︕ Athenaノートブック
  12. 代替の分析構成例 19 • Amazon Athena for Apache SparkでS3のデータを分析できる。 • ユーザーごとにコンピュートが⽤意されるので、誰かが重たいクエリを実⾏して

    マシンが重くなるということもない。 • サーバー保守も不要。 Amazon Athena for Apache Spark AWS Cloud S3 バケット (レイク・マート層) User User 構成例 良い点
  13. ⽬次 20 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for

    Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために
  14. Amazon Athena for Apache Sparkのここがすごい︕ 22 • 数クリックで起動するAthenaノートブックで、⼤規模なデータでも分析可能︕ • ノートブックのシェアで、分析処理や説明・考察の共有ができる。

    • インタラクティブな処理実⾏に最適化されたApache Sparkが利⽤できる。 ノートブックから、セル実⾏後数秒で処理が実⾏開始される。 (ウォームスタンバイなし) • Glueデータカタログのテーブルへの読み込み・書き込みがシームレスにできる。
  15. Apache Sparkの動作イメージ 25 https://spark.apache.org/docs/latest/cluster-overview.html より2023/06/10に引⽤ • Driver Programがデータに対する操作を最適化してタスクとし、Worker Nodeでタスクが実⾏される。 •

    アプリケーションとして使う分にも、遅延評価やボトルネックに関する多少の慣れと ノウハウは必要だが、⾮常に簡単に⼤規模なデータを分散処理できる。
  16. ⽬次 26 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for

    Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために
  17. リソースの作成イメージ 27 ワークグループ ワークグループ Role Role Athena ノートブック セッション ノートブック

    ノード ドライバ ノード ワークグループ Role Athena ノートブック ワークグループ Role Athena ノートブック セッション ノートブック ノード ドライバ ノード ワーカー ノード 実行 完了 セッション 開始 ノートブック 作成 セッション 終了
  18. パラメータ設定 31 • 各ノードのサイズをDPU単位で変更可能です。 • 1DPU: • 4 個の vCPU

    • 16 GB のメモリ • 最⼤同時実⾏数については、個⼈的には意図がない 場合は、最初は⼩さめにしておくと良いかもしません。
  19. ⽬次 34 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for

    Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために
  20. 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の起動も⾮常に速く、インタラクティブな分析に最適化されている。
  21. これまでのAthena SQLよりもいいの︖ 36 • 個⼈的には以下のように考えています。 • Pythonの⽅が、SQLでは簡潔に書けない処理をより簡潔に書く表現⼒がある。 特に関数を使うことで⾏数を減らし、保守性を⾼めやすい。 • PySparkを使ったアプリケーション開発をするよりも、SQLを使った開発をする⽅が

    難易度は低い。 • Pythonは既存のテスト⽤ライブラリを使うことでテストしやすい⾔語ではあるが、 SQLでもdbtなどのツールを使ってテストできる。 • ノートブックで分析処理を共有できる利点は⼤きい。 SQLファイルだけで分析内容を共有することはかなり⼯夫が必要だった。
  22. ⽬次 37 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for

    Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために
  23. データマート作成のための検証 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 • レイク層の⽣データからデータマートを作成する際の概念実証をする。
  24. ⽬次 41 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for

    Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために
  25. 権限制御 42 Amazon Athena for Apache Spark AWS Glue Data

    Catalog S3 Bucket Role User AWS Cloud Role • ノートブックで実⾏されるSparkアプリケーションの権限はワークグループに設定した IAMロールで制御する。 • どのユーザーがどのワークグループにアクセスしてよいかは、IAMユーザーおよび スイッチしているIAMロールのポリシーにて制御する。
  26. 料⾦⾯ 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/時〜
  27. まとめ 44 • 昨年12⽉に発表されたAmazon Athena for Apache Sparkについて紹介した。 • 簡単に開始でき、エンドユーザーが⼤規模なデータをインタラクティブに分析できるようになる、

    新しい⽴ち位置のサービスだと考えている。 • AthenaノートブックでPySparkの処理や説明を記述でき、分析内容を簡単に 共有することができる。 • データマートの検証や、良い特徴量の探索のような、分析内容が毎回異なり、 トライ&エラーを⾼速で繰り返す分析作業を強⼒にサポートしてくれるサービスと考えられる。
  28. 45