Fluentdを利用したツイート収集でcreated_atで日付型で保存したい。
解決したいこと
Fluentdを利用したツイート収集でdatetimeで日付型で保存したいです。
EC2のAmazon Linux2とRDSのデータベースを使い、Fluentdを経由してMySQLにツイートデータを格納しました。
mysql_bulkプラグインを使用し、日付をSTR_TO_DATE(?, '%a %b %d %H:%i:%s +0000 %Y')で保存使用としたのですが、mysql_bulkプラグインではsqlパラメータがサポートされておらず、保存することができませんでした。
日付型で保存するにはどう対応したら良いでしょうか。
解決方法を教えて欲しいです。
ただtext型で生の日付の取得はできました。
以下が出力されたデータです。
mysql> SELECT * FROM tweet LIMIT 3\G
*************************** 1. row ***************************
id: 1485944507086835718
user_id: 1042074786745262080
text: #初リプ・初絡み大歓迎 #おやツイ
#藍井エイル
raw_created_at: Tue Jan 25 11:55:52 +0000 2022
*************************** 2. row ***************************
id: 1485944511302107136
user_id: 1177086436782166021
text: やっと帰ったー
raw_created_at: Tue Jan 25 11:55:53 +0000 2022
*************************** 3. row ***************************
id: 1485944511268364289
user_id: 776342196
text: RT @mwhlll: لما احد يحسب اني قلتله كل شي بحياتي: https://t.co/KRVCmFDEHS
raw_created_at: Tue Jan 25 11:55:53 +0000 2022
*************************** 4. row ***************************
以下がMySQLの設定です。
CREATE TABLE IF NOT EXISTS tweet (
id BIGINT NOT NULL,
user_id BIGINT NOT NULL,
text TEXT,
raw_created_at TEXT,
KEY id (id),
KEY idx_user_id (user_id)
) DEFAULT CHARSET=utf8;
以下がfluentdの設定です。
<source>
@type twitter
consumer_key 〇〇〇〇
consumer_secret 〇〇〇〇
access_token 〇〇〇〇
access_token_secret 〇〇〇〇
tag input.twitter
timeline sampling
lang ja
output_format flat
</source>
<match input.twitter>
@type mysql_bulk
host 〇〇〇〇
database textdata
column_names id,user_id,text,created_at
sql INSERT INTO tweet (id, user_id, text, created_at) VALUES (?, ?, ?, STR_TO_DATE(?, "%H:%i:%s +0000 %Y %b %d"))
table tweet
username 〇〇〇〇
password 〇〇〇〇
<buffer>
flush_interval 10s
</buffer>
</match>