背景・目的
先日、Amazon Athena now supports querying restored data in S3 Glacierが発表されました。
今までは、Glacierのデータは、一度ストレージクラスを変更してからでないとAthenaで取り扱うことができませんでしたが、今回の発表により直接クエリを実行することが出来るようになったので、試してみました。
まとめ
- Standardクラスにコピーしていたが、復元すればクエリできるようになりました。
- 下記が前提になります。
- Athena エンジンバージョン3
- Apache Hiveテーブル
概要
ログ分析や長期傾向分析などのユースケースで、データを Standard ストレージ クラスにコピーすることなく、S3 Glacier Flexible Retrieval およまとめ
び Deep Archive ストレージ クラスで復元されたデータをクエリできるようになります。たとえば、S3 Standard に保存されている最近のログと S3 Glacier Flexible Retrieval で復元された古いログを組み合わせることにより、単一のクエリでストレージ クラス全体のログ分析を実行できます。Athena SQL ワークグループのクエリに対して S3 Glacier アクセスを有効にすることができます。
以前は、Standardクラスにコピーしていたが、復元すればクエリできるようになりました。
前提
下記でサポートされています。
- Athena エンジンバージョン3
- Apache Hiveテーブル
- データをクエリする前にオブジェクトを復元する必要がある。Athena はオブジェクトを復元しない。
実践
事前準備
-
下記のJSONデータを事前に用意します。
{“id”:1,”value”:”abcdefgh”}
-
Athenaのテーブルを作成
create external table qlaciertest_query( id int ,value string ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://XXXX/';
-
クエリできるか確認します。見えました。
SELECT * FROM "default"."qlaciertest_query" limit 10; === id value 1 abcdefgh
Glacier Flexible Retrievalに対してクエリ
-
プロパティを変更します。
ALTER TABLE qlaciertest_query SET TBLPROPERTIES ('read_restored_glacier_objects' = 'true')
-
上記で確認したクエリを実行します。想定通り見えなくなりました。
SELECT * FROM "default"."qlaciertest_query" limit 10; === 結果なし
オブジェクトの復元
Athenaでクエリ
- クエリできました。想定通り復元されたデータが確認できました。
SELECT * FROM "default"."qlaciertest_query" limit 10; === id value 1 abcdefgh
考察
Glacier でもコピーすることもなく復元することでAthenaでクエリすることが出来ました。
欲を言うと、復元のオペレーションを挟むことなく確認できるようになると嬉しいですね。
参考