【AWSAthena】事前調査

概要

AWS Athenaに関する事前調査まとめ

Amazon Athenaとは

S3に配置したデータを直接クエリするAWSのサービス。 巷ではフルマネージドHIVEとかいわれている。

  • S3 に置いたファイルを直接検索。1TB読み取りにより$5。ファイルが圧縮されていると更に低減
  • SQLベースでクエリできる。構文は Presto 準拠

チュートリアル

※要:ELB利用とアクセスログ

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/getting-started.html

  • SQLライクなクエリを流す
  • TABLEに、S3ファイル名のprefixやpathをもたせるみたいだ。

CREATE TABLEのリファレンスから、機能を読み解く

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/create-table.html

CREATE [EXTERNAL] TABLE [IF NOT EXISTS]
 [db_name.]table_name [(col_name data_type [COMMENT col_comment] [, ...] )]
 [COMMENT table_comment]
 [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
 [ROW FORMAT row_format]
 [STORED AS file_format] 
 [WITH SERDEPROPERTIES (...)] ]
 [LOCATION 's3_loc']
 [TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]

[PARTITIONED BY (col_name data_type [ COMMENT col_comment ], ... ) ]

[ROW FORMAT row_format]

つかってみよう

S3にCSVを配置して、Athenaのコンソールからクエリを投げる

CREATE EXTERNAL TABLE test (
    num int,
    some string,
    one string
    )
ROW FORMAT DELIMITED
      FIELDS TERMINATED BY ','
      ESCAPED BY '"'
      LINES TERMINATED BY '\n'
LOCATION 's3://paku-test-bucket/athena/test/';

-- Put file to s3://paku-test-bucket/athena/test/test.csv

S3にParquetファイルを置いてS3に配置

事前にS3にParquet形式のファイルを配置する

CREATE EXTERNAL TABLE test_parquet (
    num int,
    some string,
    one string
    )
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = '1'
) LOCATION 's3://paku-test-bucket/athena/test_parquet/';
select * from test_parquet;

-- Put file to s3://paku-test-bucket/athena/test_parquet/test.parquet