Amazon Athena
Amazon Athena は、S3上にあるファイルに対してSQLを実行して、一覧を取得したり集計したりできるサービス
ファイル形式は .csv, .tsv, .json, 各種ログ出力形式, 等々..
ref: https://docs.aws.amazon.com/ja_jp/athena/latest/ug/supported-format.html
とは言え、任意のcsvやjsonを扱えるわけではない
ファイルは .gz 等で圧縮されていても扱える
ref: https://docs.aws.amazon.com/ja_jp/athena/latest/ug/compression-formats.html
https://gyazo.com/a00d9e402c7b5be71c1c2375c87a4e4a
Athena メモ
参考: AthenaでJSONにクエリを実行してみる - Qiita
JSON形式ファイルを扱えるといっても、正しい .json は扱えない
参考: Amazon Athena の JSON データを読み込もうとするとエラーが発生します。
1行1レコード、改行区切り(末尾カンマNG)
NG1:
code:json
{
'id': 123,
'name': 'foo'
}
NG2:
code:json
[
{'id': 123, 'name': 'foo'},
{'id': 124, 'name': 'bar'}
]
NG3:
code:json
{'id': 123, 'name': 'foo'}, {'id': 124, 'name': 'bar'}
OK
code:json
{'id': 123, 'name': 'foo'}
{'id': 124, 'name': 'bar'}
S3パスを書くとき、ファイル名の途中まででマッチングはしない
ref: https://docs.aws.amazon.com/ja_jp/athena/latest/ug/tables-location-format.html
実際のファイルパス /prefix_yyyymmdd.json
NG: LOCATION 's3://bucketname/preefix_'
NG: LOCATION 's3://bucketname/preefix_*'
OK: LOCATION 's3://bucketname/' ただし全ファイルを見ようとする
実際のファイルパス /prefix/prefix_yyyymmdd.json
OK: LOCATION 's3://bucketname/prefix/'
このため、データの種類ごとにkey(ディレクトリ)分けて置いた方がよさそう