$30 off During Our Annual Pro Sale. View Details »

BigQueryを用いた データ分析基盤作成入門

curry-like
November 23, 2019

BigQueryを用いた データ分析基盤作成入門

JJUG CCC 2019 fall 発表資料です。
JJUG CCC 2019 fall: https://ccc2019fall.java-users.jp/
タイムテーブル: https://ccc2019fall.java-users.jp/timetable.html

curry-like

November 23, 2019
Tweet

More Decks by curry-like

Other Decks in Programming

Transcript

  1. BigQueryを用いた
    データ分析基盤作成入門
    #jjug_ccc #ccc_m1a
    株式会社NewsPicks 西山浩太郎

    View Slide

  2. 自己紹介
    - 西山 浩太郎
    - 株式会社NewsPicks
    - 有料会員向け機能開発
    - サーバーサイドエンジニア
    - Scala / Elm / Nuxt.js

    View Slide

  3. これらのクラウドに共通していることは?

    View Slide

  4. 本日の流れ
    1. そもそもデータ基盤とは?
    2. なぜ BigQuery なのか?
    3. BigQuery にデータを投入するには?
    4. ETL の実装
    5. デモ
    6. まとめ

    View Slide

  5. データ分析基盤とは?

    View Slide

  6. View Slide

  7. なぜ BigQuery なのか?

    View Slide

  8. なぜ BigQuery なの?
    - Redshift との比較
    - クラスターを管理するかしないか
    - Athena との比較
    - データをロードしてるかしてないか

    View Slide

  9. BigQuery を使用するメリット
    - フルマネージド
    - スケールしやすい
    - 保存するデータの管理が必要ない
    - 安定してそこそこ速い
    - データをもともとロードしている
    - 従量課金なので使い方に気をつけていればコストを抑えられ

    - Scripting, ML などの機能

    View Slide

  10. BigQuery を使用するデメリット
    - Multi Cloud はメンテナンスが大変
    - データスキャン容量に比例して課金額が増えていくので、頻繁
    にクエリを発行する場合はコストが気になる
    BigQueryで150万円溶かした人の顔 (https://qiita.com/itkr/items/745d54c781badc148bb9)より

    View Slide

  11. BigQuery にデータを投入す
    るには?

    View Slide

  12. BigQueryにデータを投入する方法
    1. 読み込みジョブを使用して batch 単位でインポート
    ● GCS や S3 からのファイル読み込み
    2. ストリーミングを使用してレコードごとにインポート
    ● Fluetndからの取り込み
    ● Dataflowからの取り込み
    ● 他

    View Slide

  13. 読み込みジョブ
    1. メインで使っているデータベースの dump の取り込み
    ● 1日1回など、定期的に行い、それほど更新しないもの

    View Slide

  14. 1. アクセスログ
    ● ログ監視をBigQueryで行う場合
    2. 生配信動画番組の反応がみたい時
    ● リアルタイムの視聴者数やコメント数
    ストリーミング
    https://medium.com/teads-engineering/give-meaning-to-100-billion-analytics-events-a-day-d6ba09aa8f44より

    View Slide

  15. データの流れのイメージ
    Stack Driver Cloud PubSub Cloud Dataflow BigQuery
    BigQuery
    Cloud Storage Cloud Function

    View Slide

  16. 今回関連するサービス
    - BigQuery
    - Cloud Storage
    - Cloud Pub/Sub
    - Cloud Dataflow
    - Stackdriver
    - Cloud functions

    View Slide

  17. BigQuery
    - Standard SQL
    - マネージド
    - 従量課金
    - 分割テーブルを使用するとコスト削減
    - Redshift や Athena のような使われ方

    View Slide

  18. Cloud Storage
    - 非構造化データを格納するストレージ
    - マネージド
    - AWS での S3 のようなもの
    - S3 等からの転送サービスがある

    View Slide

  19. Cloud Pub/Sub
    - ストリーミング取り込み/配信サービス
    - マネージド
    - GCP 上のサービス間の連携に使われる
    - AWS での SNS のようなもの

    View Slide

  20. Cloud Dataflow
    - ストリーミング / バッチ 処理のサービス
    - マネージド / オートスケーリング
    - Apache Beam SDK を使用
    - Java / Scala / Python / Go

    View Slide

  21. Stackdriver
    - モニタリング、ロギングのサービス
    - マネージド
    - Cloud Watchのようなもの

    View Slide

  22. Cloud Functions
    - サーバレス
    - AWS の Lambda のようなもの
    - 対応言語: Node, Go, Python

    View Slide

  23. - Spark, Hadoop クラスタ
    - マネージド
    - AWS の EMR のようなもの
    (参考) Cloud Dataproc

    View Slide

  24. Dataflow VS Dataproc
    https://cloud.google.com/dataflow/?hl=jaより

    View Slide

  25. データの流れのイメージ
    Stack Driver Cloud PubSub Cloud Dataflow BigQuery
    BigQuery
    Cloud Storage Cloud Function

    View Slide

  26. データの流れのイメージ
    Stack Driver Cloud PubSub Cloud Dataflow BigQuery
    BigQuery
    Cloud Storage Cloud Function

    View Slide

  27. データレイク構成
    - 生のデータを一箇所にまとめておく
    - 後々、必要に応じて DWH にデータを投入できる
    Cloud Storage
    BigQuery Cloud Dataflow
    Cloud Function Cloud Dataproc

    View Slide

  28. 再実行性(冪等性)
    - 回復可能な作りにしておくこと
    - 特にstreaming処理の場合、生データを保存しなくても動くの
    で注意

    View Slide

  29. なるべくマネージドのサービスを使う
    - 運用が好きな人は少ない
    - 属人性の排除

    View Slide

  30. ETL の実装

    View Slide

  31. Apache Beam
    - Google 発のOSS
    - Dataflow, Spark 等、様々な場所で動く
    - Java, Python, Go
    - Batch 処理と streaming 処理両方に対応

    View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. Scio
    - Apache Beam と Google Cloud Dataflow の Scala API
    - GCP の様々なサービスと連携可能
    - Type Safe BigQuery

    View Slide

  36. View Slide

  37. Spotify の人によると…?
    Scala Matsuri 2019 「Data processing at Spotify using Scio」 より

    View Slide

  38. デモ

    View Slide

  39. データの流れのイメージ
    Stack Driver Cloud PubSub Cloud Dataflow BigQuery
    Cloud Storage

    View Slide

  40. 他にもこんな構成でも
    Cloud PubSub
    Cloud Storage Cloud Dataflow BigQuery

    View Slide

  41. まとめ
    - コストや運用の観点も踏まえて、最適なDWHを選びましょう
    - GCP に限らず、データ基盤を作る際に注意することは意識し
    ましょう
    ● データレイク
    ● 再実行性
    - なるべくマネージドのサービスを活用しましょう

    View Slide