2014年1月13日月曜日

2つのTwitterSource.java

CDH 4.5に含まれるFlume-NGにはTwitterからデータを取得するためのTwitterSourceクラスが含まれるようになっています。これがCDH 4.5にTwitter4Jが同梱されるようになった理由。実際こんな感じでjarファイルが転がっているのが見て取れます。

% cd /opt/cloudera/parcels/CDH-4.5.0-1.cdh4.5.0.p0.30/lib/flume-ng/lib
% ls -lF twitter*
-rwxr-xr-x 1 root root 283752 Nov 21 11:07 twitter4j-core-3.0.3.jar*
-rwxr-xr-x 1 root root  27690 Nov 21 11:07 twitter4j-media-support-3.0.3.jar*
-rwxr-xr-x 1 root root  56262 Nov 21 11:07 twitter4j-stream-3.0.3.jar*

これだけで終わってもいいのですが折角なので混乱を招くのではないかと思うTwitterSource.javaについて書いておきます。

世の中には2つのTwitterSource.javaがある

cdh-twitter-example版

  • com.cloudera.flume.source.TwitterSource
  • TwitterのSample APIを叩く
    • 指定されたキーワードを含むものが取得できる
  • フォーマットはいじらずに後段に流す
コードからコメント抜いてくるとこう書いてある:

/**
 * A Flume Source, which pulls data from Twitter's streaming API. Currently,
 * this only supports pulling from the sample API, and only gets new status
 * updates.
 */


Flume-NG版

  • org.apache.flume.source.twitter.TwitterSource
  • TwitterのStreaming APIを叩く
    • Firehoseで取得できるものの1%がサンプリングされるらしい
  • Avroフォーマットにして後段に流す
コードからコメント抜いてくるとこう書いてある:

/**
 * Demo Flume source that connects via Streaming API to the 1% sample twitter
 * firehose, continously downloads tweets, converts them to Avro format and
 * sends Avro events to a downstream Flume sink.
 *
 * Requires the consumer and access tokens and secrets of a Twitter developer
 * account
 */


まとめ

早い話がClouderaが作ったTwitterSource便利だからApache Software Foundationに寄贈してFlume-NGに取り込まれたけどちょっと機能が変わってますね、ということでした。

0 件のコメント:

コメントを投稿