Twitter Streaming APIでかき集めたツイートをSparkで分析してみました。

Hadoop版はこちら→Hadoop Streamingでアイドルツイート分析

Hive版はこちら→Hiveでツイート分析

環境

  • OS: Mac OS X(El Capitan)
  • Python: 2.7.11
  • Hadoop: 2.7.1

インストール

こんな感じでPrebuild for Hadoop 2.6 or laterをダウンロード、インストールします。

手動でダウンロードする場合は、Sparkのダウンロードサイトに行って、4のDownload Sparkをクリックした先にダウンロードリンクが表示されます。

download-spark

設定

S3を利用するので{SPARK_PATH}/conf/spark-defaults.confに以下の2行を追加

本当はワイルドカードでクラスパスを指定したかったんですが方法が見つからず…

起動

AWSのAPI用クレデンシャルを環境変数をセットしてからpysparkを起動します。

以下のようなコードを打ち込むとHDFS内のデータに対して処理を行えます。gzで圧縮されている入力ファイルは1行1JSONのツイートデータが格納されています。

S3に対して行いたい場合は”hdfs://…”を”s3n://…”や”s3a://…”にすればOKです。Class xxx not foundと言われる場合はクラスパスの指定が問題なので、spark-defaults.confなどの設定を見直してください。

なおRDDをキャッシュする場合は以下のようにします。

データがメモリに乗り切ってない場合は以下の様なワーニングが発生します。

この場合はメモリ量を調整すればOK。spark-defaults.confだとこんな感じ。

参考URL