3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Fluentdを使ってMongoDBにツイートを保存してみた

Posted at

はじめに

今回はTwitter Streaming APIとFluentd、FluentdとMongoDBを連携させて、MongoDB内にツイートデータを溜めていきたいと思います。(Fluentdを使ってみたかっただけ)

環境

Vagrant1.9.3
Ubuntu14.04
Python3.5
Anaconda3-4.3.0

Fluentdのインストール

下記コマンドを実行してインストールします。

$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

・fluentdの起動

sudo service td-agent start

・fluentdの停止

sudo service td-agent stop

・fluentdの状態確認

sudo service td-agent status

Twitter Streaming APIとFluentdを連携させる

Twitterからツイートを取得し、fluentdに流します。

Twitter Streaming APIを使えるようにする

まずこのサイトを参考にTwitterアプリケーションの登録や Twitter Streaming API に必要な以下の4つの情報を取得してください。

・Consumer Key
・Consumer Secret
・Access Token
・Access Token Secret

twitterプラグインのインストール

下記コマンドを実行すればインストールできます。

$ sudo yum -y install openssl-devel libcurl libcurl-devel gcc-c++
$ sudo td-agent-gem install install eventmachine
$ sudo td-agent-gem install fluent-plugin-twitter

td-agent.conf の設定

/etc/td-agent/ 内のtd-agent.confを編集します。
sourceディレクティブで入力方法を指定します。
CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRETの部分には、各自が取得したものを入力してください。

/etc/td-agent/td-agent.conf
<source>
  @type twitter
  consumer_key CONSUMER_KEY
  consumer_secret CONSUMER_SECRET
  access_token ACCESS_TOKEN
  access_token_secret ACCESS_TOKEN_SECRET
  tag input.twitter
  timeline sampling
  lang ja
  output_format nest
</source>

FluentdとMongoDBを連携させる

同様に/etc/td-agent/ 内のtd-agent.confを編集します。
matchディレクティブで出力方法を指定します。
今回はfluentdデータベースのtwitterコレクションにツイートを格納します。

/etc/td-agent/td-agent.conf
<match input.twitter>
  @type mongo
  host localhost
  port 27017
  database fluentd
  collection twitter
  flush_interval 10s
</match>

ツイートを取得

これで準備は整いました。

sudo service td-agent start

でfluentdを起動させ、ツイートの取得を開始します。
しばらくしてからmongoに入って、ツイートが格納されているか確認してみます。

> use fluentd
> db.twitter.count()

で確認すると、

9294

となって、9294件のツイートがしっかりMongoDBに保存されているのがわかります!
知らないユーザーの方たちをツイートをランダムに取得していたので、中身をピックアップして載せるのはやめます...

まとめ

今回はTwitterAPI → Fluentd → MongoDBの一連の流れをやってみました。データ分析系の記事を読んでいるとFluentdの名前をよく目にするので、一度使ってみたかったというのが主な動機でした。
今回はツイートを取得するだけで終わりましたが、今度はこれを利用して大量のツイートからテキストマイニングなどもしてみたいです。

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?