Spark Streamingで作る、
つぶやきビッグデータのクローン
秋葉原IT戦略研究所
野田純一
2015.11.10
Overview
1.自己紹介
2.目的
3.Spark Streamingについて
4.検証サービス説明
5.Spark Streamingを使用したオンラインTwitter解析によるレコメンドシステム
「Mikasa」-三笠
6.まとめ
1. 自己紹介 野田純一
■結構前
Java2EEによる業務オペレーションシステム
■ちょっと前
Perl/Rubyでソーシャルゲーム フレームワー
ク開発
■最近
Hadoopでアドテク
Github: https://github.com/AKB428
Twitter: @n428dev
Qiita: http://qiita.com/AKB428
Hatena: http://akb428.hatenablog.com/
本部: http://akibalab.info/
Junichi Noda Larry Wall
• Sparkについて少し執筆しました
• 「Software Design 2015年11月号」
• ConoHaを使ったHadoopクラスタの構成例と
SparkSQLをつかったデータ処理の実例が記載。
5
↓これが作りたい
2014 7月22日 NHK
3. Spark Streaming について
• Sparkサブシステムの一つでファイルからでなくリアルタイ
ムに流れてくるストリームソースに対しての集計を対象とし
ている。
• 直近1時間のツイート数を毎分集計する、直近3時間でアクセ
スが多いIPを集計する・・などのウィンドウ集計が可能。
3. Spark Streaming ∼データソースについて
その他、ssc.socketTextStream(" localhost", 7777)
とするとローカルポートをソースにできるのでサーバーのログを流
し込んでリアルタイムにエラー、クラックIPの集計などが可能。
4. Spark Streamingを使用したオンライン
Twitter解析によるレコメンドシステム
「Mikasa」-三笠
https://github.com/AKB428/mikasa_ol
https://github.com/AKB428/mikasa_rs
動画デモ
http://youtu.be/o6xq_RdNv6s
これがこのプレゼンを聞くと作れるようになります。
• Twitterストリームからデータを取得する。
• Twitter Streaming APIを使う。
• 400の検索キーワードが指定可能。
• Spark Stremingでリアルタイム集計を行う。
• 日本語文章を単語にわけて分解して集計
• 日本語を分解するため形態素解析ライブラリ
kuromojiを使う。
• アニメ作品など標準辞書にない単語はユーザー辞
書(CSV)を用意。
形態素解析ライブラリの必要性について
ユーザー辞書の必要性について
Spark Streamingによるウィンドウ集計の活用
Mikasaは直近5分、直近60分のデータ集計を毎
分行っている。(合計60*2=120回)
少ないソースコードで、ウィンドウ集計が可能。
• ソースコード
• https://github.com/AKB428/mikasa_ol/blob/
master/src/main/scala/mikasa.scala
画面デモ(直近5分を毎分集計)
(F1)2015年2期 TVアニメ http://tv-anime.xyz/5/
(F1)ラブライブ http://tv-anime.biz/5/
(F2)ラブライブ http://lovelive-net.com/5/
(F2)秋葉原 http://akiba-net.com/5/
(F2)関東TV番組 http://telev.net/5/
F1=ユーザー辞書に登録してある単語のみ集計
F2=ユーザー辞書外の単語も集計
画面デモ(直近60分を毎分集計)
(F1)2015年2期 TVアニメ http://tv-anime.xyz/60/
(F1)ラブライブ http://tv-anime.biz/60/
(F2)ラブライブ http://lovelive-net.com/60/
(F2)秋葉原 http://akiba-net.com/60/
(F2)関東TV番組 http://telev.net/60/
F1=ユーザー辞書に登録してある単語のみ集計
F2=ユーザー辞書外の単語も集計
画面デモ 過去の履歴キャプチャ
2015年7月22日
7月22日 ラブライブ 矢澤にこ 誕生日
24
25
2015年7月22日
過去のキャプチャ 今期(2015/夏期)のアニメ
26
実際の売上
27
デモ:リコメンドTwitterボット
https://twitter.com/Akihabaara_itso
https://twitter.com/AuctionMadoka
サーバーデモ
動作中のサーバーのコンソールを公開
ユーザー体験デモ(直近5分集計)携帯でアクセス!
(F1)2015年2期 TVアニメ http://tv-anime.xyz/5/
(F1)ラブライブ http://tv-anime.biz/5/
(F2)ラブライブ http://lovelive-net.com/5/
(F2)秋葉原 http://akiba-net.com/5/
(F2)関東TV番組 http://telev.net/5/
F1=ユーザー辞書に登録してある単語のみ集計
F2=ユーザー辞書外の単語も集計
ユーザー体験デモ(直近60分集計)携帯でアクセス
(F1)2015年2期 TVアニメ http://tv-anime.xyz/60/
(F1)ラブライブ http://tv-anime.biz/60/
(F2)ラブライブ http://lovelive-net.com/60/
(F2)秋葉原 http://akiba-net.com/60/
(F2)関東TV番組 http://telev.net/60/
F1=ユーザー辞書に登録してある単語のみ集計
F2=ユーザー辞書外の単語も集計
コミケやモーターショーのようなイベントの大型モ
ニタに展示するのが一番効果的です。
●各種イベントの公共モニタに提供中
オープンソースカンファレンス2015 Tokushima
(11月14日) 予定
オープンソースカンファレンス2015 Hiroshima
(9月19日) 
オープンソースカンファレンス2015 Shimane
(8月22日) 
4. Spark Streaming ∼ソースコード補足
• TwitterUtilは実体はJavaのTwitterライブラリで
あるtwitter4j
• Twitter解析にはTwitterAPI特有のAPIレートリ
ミット、単一IPによる高負荷時のアクセス制
限があるので注意
• Twitter開発者アカウントには電話番号が必須
になったので気軽に開発はできなくなりつつ
ある。
Mikasaインストールについて
インストールマニュアル
https://gist.github.com/AKB428/c30bc6a979e05fa3a022
• TwitterAPIとAmazonAPIのアカウントがあれば1時間でセット
アップ完了。
• AmazonAPIはリコメンドしない場合は不要。
• TwitterAPIのアカウント取得も10分程度で可能。
Mikasa OL
https://github.com/AKB428/mikasa_ol
Mikasa RS
https://github.com/AKB428/mikasa_rs
• 10. まとめ
• Twitterストリームのリアルタイムな集計にSpark
Streamingは最適だった。(SQLだとデータを一度DB
に格納し日付系の長いSQLを打つ必要がある。)
• 日本語データを解析するためには形態素解析ライブラ
リの使い方の把握、ユーザー辞書のチューニング、デー
タクレンジングが重要で、ある程度は時間がかかる。
• Hadoop界隈のトレンドは間違いなくSpark。クラスタ
設計をする場合はメモリに関しては潤沢に用意する必
要はある。・・が取り扱い幅が大きくないならスタン
ドアロンでも十分。
秋葉原IT戦略研究所(同人ITサークルです)
コミケ出展します
C89 12/31 東ピ56b
Twitterデータ解析本配布予定
http://akibalab.info/
https://webcatalog.circle.ms/Circle/12302282/
ご清聴ありがとうございました

Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)