Closed3
Amazon Athenaの使い方まとめ
初めに
「Amazon Athena」は「Amazon S3」に直接SQLクエリを実行することが可能なサービスです。データが少量の場合には特に気をつける事項はないのですが、利用量が増えれば増えるほど、最初のデータ設計が非常に重要になってきます。
本書では基本的な使い方含め、もう一歩踏み込んだ使い方までをまとめていきます。なお著者自身もAthenaを使うのは初めてなので悪しからず。
初心者向け
用語解説
基本的な使い方はAthena Console上で行うのが1番理解しやすいです。押さえておきたい用語は以下の通り。
用語 | 説明 |
---|---|
workgroup | クエリ制限、結果保存場所など、全体設定が可能 |
datasource | クエリを投げる対象のサービスを指定可能 (Glue,S3,DynamoDB/etc) |
table | datasourceと紐付き、どのs3パスから何のデータを取得するかを定義する |
query | SQLクエリ |
案外AWSのユーザガイドが1番よくまとまってたりします→Amazon Athena とは
避けて通れないパーティション
パーティションを一言で表すと「S3上の特定のフォルダ(パス)のみを検索用に使うID」みたいなものです。例えば、S3上で日付フォルダで1年分のデータがあるとします。
* 2022-01-01/**(この下に数百件のファイルが存在する)
* 2022-01-02/**(以下同じ)
...
* 2022-12-31/**
これを全て検索させるととんでもない量になるので日付のパーティションを事前に用意しておくことで、特定日付のフォルダ配下だけを検索することが可能になり、効率化が図れます。
ちなみにS3上で規則正しい状態に保存されてない場合は手動で全てのフォルダにパーティション情報を紐づけていく必要があります😩
トラブルシューティング
Row is not a valid JSON Object
が発生
JSONエラー: ALTER TABLE <table_name> SET TBLPROPERTIES ('ignore.malformed.json' = 'true')
ignore.malformed.json が true に設定されている場合、不正な形式のレコードは NULL として返されます。
中・上級者向け
タイムスタンプ問題
パフォーマンス最適化
このスクラップは2022/10/18にクローズされました