Memo/AmazonWebServices/Athena

https://dexlab.net:443/pukiwiki/index.php?Memo/AmazonWebServices/Athena
 

Athena


ベストプラクティス

  • HIVE形式(<PARTITION_COLUMN_NAME>=<VALUE>)でパーティション分割する。それ以外(例:YYYY/MM/DD)では、検索したい数だけパーティションを手動で追加する必要がある。
    s3:/bucket/year=YYYY/month=MM/day=DD/file.gz
  • ファイルフォーマット
    • Parquet, ORC, Text files, Avro, CSV, TSV, and JSON
  • SQL
    • 「LIMIT 10000」のように制限する
    • JOINする場合、大きいTABLEを左側に、小さいTABLEを右側に指定する。「FROM big_table, little_table」
    • GROUP BYは、カーディナリティ(カラムに含まれている種類)が高い順に指定する。文字列ではなく、数値を指定する。
    • LIKEは「regexp_like(l_comment, 'wake|regular|express|sleep|hello')」で一つに纏める。
    • ユニークな個数を調べる場合「count(distinct l_comment)」の代わりに、「approx_distinct(l_comment)」を使う。ただし、誤差が2.3%出る
    • 「SELECT * 」の代わりに「SELECT customer.c_name」のように明示的にカラム名を指定する

パーティション分割

Athenaは1TBのスキャンあたり、1回$5かかるため、スキャンデータを減らす工夫をしないと、コストが非常に増える。

  • 検索時によく指定する、日付、ホスト名、アプリケーション名等で分割すると良さそう

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-03-31 (火) 13:59:38 (5d)