AthenaでCSVファイルのParque形式への変換ができるのですが、GUIからだけでなく、CUIからやったらできるかな、と試したらできたのでメモ。
実行したコマンド
# GUI版 CREATE TABLE parquet_db.p_target_table WITH (external_location = 's3://<bucket_name>/<directory_name>/', ,format = 'PARQUET') AS SELECT * FROM original_db.target_table; # CLI版 aws athena start-query-execution \ --query-string "CREATE TABLE parquet_db.p_target_table WITH (format = 'PARQUET') AS SELECT * FROM original_db.target_table;" \ --result-configuration OutputLocation=s3://<bucket_name>/<directory_name>/
CLIの場合、「--result-configuration」を指定する必要があるため、GUIでは「external_location」で指定していたParquetファイルの格納パスを「--result-configuration」にて指定しました。
そのせいなのか、双方で生成されたParquetファイルの格納パスに差が出ました。
# GUI版(指定したディレクトリ配下に作成される) [ec2-user@ip-192-168-X-XXX ~]$ aws s3 ls s3://<bucket_name>/<directory_name>/ --recursive 2019-07-21 06:31:01 3298 <directory_name>/20190721_063057_00003_sx4xn_4f674de2-33ab-42b1-a5e9-472496a84998 2019-07-21 06:31:02 1802493 <directory_name>/20190721_063057_00003_sx4xn_c324745e-7838-4df5-b8de-6f8a0a7e7b6b # CLI版(指定したディレクトリ配下に「/tables」ディレクトリが作成され、その配下に作成される) [ec2-user@ip-192-168-X-XXX ~]$ aws s3 ls s3://<bucket_name>/<directory_name>/ --recursive 2019-07-21 06:13:15 83 <directory_name>/tables/abbe3dfb-1676-4642-ad7c-859d6341085c.metadata 2019-07-21 06:13:13 3298 <directory_name>/tables/abbe3dfb-1676-4642-ad7c-859d6341085c/20190721_061308_00001_v89wr_cdd1ced0-adb3-42c4-bb44-4893dd71c958 2019-07-21 06:13:13 1805174 <directory_name>/tables/abbe3dfb-1676-4642-ad7c-859d6341085c/20190721_061308_00001_v89wr_e62b513d-f8d2-4c5b-8413-57c9f7f7c88e
補足
CLI版でも「external_location」を指定した場合、GUI版と同じ結果が得られました。ただし、「OutputLocation」で指定したディレクトリに「*****.metadata」というファイル(Athena メタデータファイル)が作成されました。
メタデータファイルを (*.csv.metadata) を削除してもエラーは発生しませんが、クエリに関する重要な情報が失われます。
という記述がありますが、削除してもParquet化したテーブルの問い合わせには影響はありませんでした。
参考にしました