pandazx's blog

データ分析など雑多な技術ブログ

「アプリケーションエンジニアのためのApache Spark入門」出版記念セミナーに行ってきた

connpass.com

に行ってきた。以下はメモ

Apache Spark入門書籍の紹介

  • 理論よりも使い方に重きを置いた入門書
  • サンプルのプログラミング言語Python
  • データ分析基盤に使われるOSS紹介
  • データ収集はfluentd, kafka
  • データ蓄積はhdfs, cassandra
  • ストリーム処理、簡易な集計分析はSpark structured streaming
  • バッチ処理はSpark SQL
  • データ分析はSpark MLlib, Jupyter
  • Sparkが注目されている理由はデータ分析プラットフォームの主要な機能があるため

Fluentd, Kafkaの紹介

  • 残念ながらスピーカーが私用のため、欠席

Spark Streamingについて

  • ストリーム処理はデータが無限
  • バッチ処理はデータが有限
  • ただ、Spark Streamingはマイクロバッチなので、データを有限として扱う
  • Spark2.3.0から継続実行方式が可能になる
  • ストリーム処理で発生する問題
  • データが発生した順に到着しない。out of order. ネットワーク遅延やサーバ間の時刻ズレなどが原因
  • データのグルーピングの概念
  • タンブリングウィンドウは固定長で区切る方式
  • スライディングウィンドウは固定長だが、スライド幅が異なる方式
  • セッションウィンドウは特定キー、特定時間内のデータを同一ウィンドウにまとめて処理する方式
  • 実際に到着が遅れて困る例。データが大幅に遅れると、どこまで、その遅れを待てばいいのか検討が必要
  • 対応方法としては、データ発生時刻とデータ処理時間を分けて管理する。加えてDBへの投入時間を管理する場合もある
  • どこまで処理したかの管理はwater markで管理
  • データ発生時刻が一定時間以上古い場合は除外する
  • 出力する値や集計方式として、処理完了したもの、追加部分のみ、更新部分のみを選択可能
  • これらのサンプルプログラムが書籍に記載されている

データの蓄積

  • Spark SQLとCassandraの紹介
  • Spark処理結果を出力先として、Cassandraがオススメ

データ分析について

  • データ分析プロセスCRISP-DM
  • 他にKDD,SEMMAがある
  • 資料は後日、公開

プロダクション投入に向けて

  • Sparkは計算資源といえる。そのため、ステートレス化できる。今風に言えばサーバレスにできる
  • AWS Glueを使うとHdoopクラスタなしにSparkを使える。GlueにHive metastoreを置いて、実データはS3に置く構成