読者です 読者をやめる 読者になる 読者になる

stMind

You'll never blog alone

Twitter Realtime HeatmapをMacで動かす

Real-time Twitter heat map with MongoDB | comSysto Blog
特定キーワードを含むツイートをヒートマップにしてリアルタイムにGoogle map上に
表示するアプリケーション。
ソースコードがgithubに公開されていたので、macで動かしてみました!
以下、そのステップのメモです。

1. 必要なモジュールのインストール

MongoDBとRedis本体をbrewでインストールします。

$ brew install mongodb
$ brew install redis

アプリケーションで使われているpythonモジュールをpipでインストールします。

$ pip install pymongo
$ pip install redis
$ pip install tweepy
$ pip install Flask

Twitter Realtime Heatmapのソースコードはgithubからクローンしておきます。

$ git clone https://github.com/comsysto/twitter-realtime-heatmap

2. MongoDBとRedis起動

$ sudo mkdir /var/db/mongodb
$ sudo touch /var/log/mongodb.log
$ sudo mongod --dbpath /var/db/mongodb --logpath /var/log/mongodb.log

こちらのページを参考にしました→Mac OS X で MongoDB を動かす - LazyLoadLife

$ redis-server

Redisはこちらを参考に→Redis 起動時 Tips - hata'daizu

3. tstream.pyでツイートを取得

クローンしたtwitter-realtime-heatmapにあるtstream.pyにconsumer_key等を記述します。

consumer_key = '自分のconsumer_key'
consumer_secret = '自分のconsumer_secret'

access_token_key = '自分のaccess_token_key'
access_token_secret = '自分のaccess_token_secret'

追記したらtstream.pyを起動してツイートを取得します。起動するとコンソールにだーっとツイートが
表示されるはず。

$ pyhon tstream.py

4. mongoシェルを使ってcapped collectionを有効に

tstream.pyを起動すると、tstreamというdbが出来ます。このdbでtweet_tailというcollection
が最初はCappedがfalseとなっているので、これをtrueにします。(ちょっと良くわかってないけど)

$ mongo
MongoDB shell version: 2.0.4
connecting to: test
> show dbs
local	(empty)
tstream	0.203125GB
> use tstream
switched to db tstream
> db.tweets_tail.isCapped()
false
> db.runCommand({"convertToCapped": "tweets_tail", size:10000000});
{ "ok" : 1 }
> db.tweets_tail.isCapped()
true

5. tweet_service.pyを起動してmapのURLにアクセス

あとは、tweet_service.pyを立ちあげて、http://localhost:5000/static/map.htmlにアクセスして
しばし待つと、じわじわとHeatmapが表示されていきます!!

$ python tweet_service.py
 * Running on http://0.0.0.0:5000/
 * Restarting with reloader

デフォルトは['bigdata', 'devops', 'hadoop', 'twitter']を含むツイートのHeatmapになってます。
イギリス周辺がじわーっと増えて行きました。

f:id:satojkovic:20121206073424j:plain

6. まとめ

リアルタイムに更新されるデータをヒートマップにして視覚化するというアイデアは、
シンプルで色々と応用できそうですよね。
ぼーっと眺めているだけでも、すごく楽しいです。一度、手元で試してみてはいかがでしょうか。