Twitterのストリームをさくらのクラウドに格納した
さくらのクラウドが提供しているデータベースにTwitterのストリームのデータを格納する方法のメモです。
やりたいこと
Twitter Streaming APIからパブリックタイムラインを取得し、さくらのクラウドのデータベースアプライアンス(MariaDB)にツイートをどんどん格納する。
やったこと
さくらのクラウドでデータベースアプライアンスの作成
さくらインターネットのクラウドサービスが提供しているデータベースアプライアンスを利用・
これはコントロールパネルから作成。
1日1回の自動でのバックアップ取得やphpMyAdminが組み込まれておりWebUIから全部完結するのは便利。
あと、IP制限もコントロールパネルから設定できるので手軽でした。
TwitterのAPIキーの取得
Twitter Developersからアプリケーションのカスタマーキーなどを取得
データを集めるFluentdサーバの作成、設定
今回はCentOS 7のサーバを作成。
そこにfluentdなどを入れてゆきます。
これらをインストールして td-agent.conf に追記します。
<source>
@type twitter
consumer_key hogehoge
consumer_secret hogehoge
access_token hogehoge
access_token_secret hogehoge
tag input.twitter.sampling
timeline sampling
lang ja
output_format flat
</source>
<match input.twitter.sampling>
@type mysql
host 192.168.10.100
database sakura
key_names id, user_id, text, created_at
sql INSERT INTO publictw (id, userid, text, createat) VALUES (?, ?, ?, STR_TO_DATE(?, "%a %b %d %H:%i:%s +0000 %Y"))
username sakura
password hogehoge
flush_interval 10s
</match>
hogehogeの部分は適切な値に変更してください。
MySQLの設定はデータベース名やUsername/Passwordもコントロールパネルから設定したものを入力してください。ちなみに今回はデータを格納するためのテーブルとして publictw
と言うものを作成しています。
結果
こういうデータはDynamoDBなんかのNoSQLデータベースに格納するのが鉄板かなと思っていたんですが、本物のSQL構文が使えデータの読み書きに課金されないRDBMSが今のところはベストだと思います。
RDBMSはデータ量が増えたときに辛くなりますが、それくらいのデータを蓄えてから考えたいと思います。
参考情報
以下の情報を参考にさせていただきました。ありがとうございます。
Author And Source
この問題について(Twitterのストリームをさくらのクラウドに格納した), 我々は、より多くの情報をここで見つけました https://qiita.com/ecilad442/items/cb8d8c7e9da0b3e60f00著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .