Athena
s3に直接クエリ
スキャンデータ量に対しての従量課金
Presto
Athena エンジンバージョン 2 は Presto 0.217 に基づいています
クエリエンジン
OSS
メモリ上で処理
Athenaのデータの扱い
データセット
CSV、JSON、Avro、Parquet
データカタログ
AWS Glue Data Catalog
メタストア
Athena では、メタデータを整理するためのシステムを、データカタログまたはメタストア
データ形式
CSV
JSON
Apacheログ
カスタム区切りも可能
正規表現
データ圧縮形式
Snappy
CTAS
CREATE TABLE AS SELECT (CTAS)
SELECT ステートメントの結果から、Athena で新しいテーブルを作成
SerDe
SerDe (シリアライザー/デシリアライザー)
クエリ
Athena API
Query Execution API
Named Query API
OLTPではなく、OLAP
ETLではなく分析向け
パフォーマンスチューニング
128MB未満のファイルをできるだけ作らない
列指向データの作成
なるべくフルスキャンはしない
読み込むデータ量を減らすことが重要
パーティション
列志向フォーマット
圧縮
パーティション
year/month/day
s3://yourBucket/pathToTable/<PARTITION_COLUMN_NAME>=<VALUE>/<PARTITION_COLUMN_NAME>=<VALUE>/
s3://athena-examples/flight/parquet/year=1991/month=1/day=1/
パーティションが増えるとオーバーヘッドが大きくなる
Alter Table <tablename> add Partition (PARTITION_COLUMN_NAME = <VALUE>, PARTITION_COLUMN2_NAME = <VALUE>) LOCATION ‘s3://yourBucket/pathToTable/YYYY/MM/DD/’;
カラム名
=とスラッシュ
Hive標準
列指向
圧縮効率が良い。
行指向
Joinの最適化
大きなテーブルを左側、小さなテーブルを右側
JDBCドライバ
Athena や Amazon S3 バケットなどの AWS のサービス とリソースへのアクセス権を得るには、アプリケーションに JDBC または ODBC ドライバーの認証情報を提供します。
クエリした結果を
SPICにインメモリに入れる
パーティション
Athena権限
Athena workgroup
Athena権限
管理者無制限スキャンとか
参考
テーブル作成
データソースの指定
LOCATION 's3://path
データがどこにあるのか
S3
構造化されていないデータの場合
構造化されていないテキストデータ (通常はログ) の逆シリアル化専用のパターンセットで構成されるライブラリ
定義済みパターン
code:sql
ROW FORMAT SERDE
'com.amazonaws.glue.serde.GrokSerDe'
WITH SERDEPROPERTIES (
'input.format'=''
)
スキャン
出力先を指定しておかないと、クエリを実行できない。
S3の階層全てスキャン可能
データの可視化
Amazon QuickSightで、Athenaのデータを見る。