Amazon Athena
S3のデータに対してSQLクエリできる。 課金体系は、スキャン量課金で、1TB毎に5ドル程度(BigQueryやRedshift Spectrumも同程度の額)。
コスト最適化
主に2パターンある。
データを列指向のparquet型などで持つ
パーティション分割により、データのスキャン量を削減
パーティション分割
Hiveパーティションの場合
MSCK REPAIR TABLE
でパーティションを認識させられるこの場合、GlueのData Catalogでパーティション状況がわかる。
Athenaからのパーティション射影により、DDLでパーティション認識させることができる
この場合、GlueのData Catalogでパーティション状況が見えなくなり、テーブルのスキーマ定義などだけが記録される。
後者の場合が設定は楽だが、他サービスはこのパーティション射影に対応してない場合があり、その場合はMSCK REPAIR TABLE
を使う方が良い可能性がある。 他、メリットデメリットについては参考URLを参照。
参考
カラム更新時のPARTITION再設定
カラムを変更(float->double)などに変更した場合、作成済みのPARTITIONについては再度作成が必要となる。 (データをINSERT INTOなどで挿入しようとすると、エラーとなる。)
エラーとなったパーティションについてGlueで型の定義を確認することが可能。
以下のクエリでエラーとなったパーティションを再作成して上書きすることも可能。
ただしAthenaの場合、通常は一回DROPするか、MSCK REPAIR TALBEする方が良いと考えられる。
なおパーティション射影の場合は、これは発生しない?と思われる。
参考記事
Last updated