Amazon Athena クエリ出力を、CSV 以外の形式 (圧縮形式など) で保存する方法を教えてください。

最終更新日:2021年12月20日

Amazon Athena クエリの結果を、JSON や圧縮形式など、CSV 以外の形式で保存したいと考えています。

解決方法

Athena でサポートされているのは、CSV 出力ファイルのみです。UNLOAD クエリは、SELECT ステートメントのクエリ結果を指定したデータ形式に書き込みます。UNLOAD でサポートされている形式には、Apache Parquet、ORC、Apache Avro、および JSONが含まれます。CSV は Athena SELECT クエリで使用される唯一の出力形式ですが、UNLOAD を使用して SELECT クエリの出力を UNLOAD がサポートする形式に書き込むことができます。CTAS ステートメントを使用して CSV 以外の形式でデータを出力することもできますが、これらのステートメントでは Athena でテーブルを作成する必要もあります。UNLOAD 文は、SELECT クエリの結果を CSV 以外の形式で出力したいが、関連付けられたテーブルは必要ない場合に便利です。たとえば、ダウンストリームアプリケーションでは SELECT クエリの結果を JSON 形式にする必要がある場合があり、SELECT クエリの結果を追加の分析に使用する場合は、Parquet または ORC がCSVよりもパフォーマンス上の利点を提供する可能性があります。

クエリ出力ファイルを別の形式で保存する場合は、CREATE TABLE AS SELECT (CTAS) クエリを使用して、[形式] プロパティを構成します。クエリが完了したら、CTAS テーブルを削除します。以下に留意してください。

  • [形式] を ORC、PARQUET、AVRO、JSON、または TEXTFILE に設定できます。CTAS クエリの形式を指定しない場合、Athena はデフォルトで Parquet を使用します。
  • パラメータの名前 [形式] は小文字でリストする必要があります。そうしないと、CTAS クエリが失敗します。例については、「例: クエリ結果を別の形式に書き込む」を参照してください。
  • デフォルトでは、すべての CTAS クエリは GZIP 圧縮を使用します。Parquet および ORC では、parquet_compression および orc_compression オプションを使用して、SNAPPY などの他の圧縮タイプを指定できます。例については、「例: データストレージと圧縮形式の指定」を参照してください。
  • テキストベースの形式の場合、次のように field_delimiterWITH (field_delimiter = ',') のように指定できます。フィールド区切り文字を指定しない場合、Athena はデフォルトで\001 を使用します。
  • CTAS クエリで external_location パラメータを使用する場合は、Amazon Simple Storage Service (Amazon S3) の場所にデータがないことを確認してください。データがあると、次のようなエラーが表示されることがあります。「HIVE_PATH_ALREADY_EXISTS: Target directory for table 'table_name' already exists: s3://AWSDOC-EXAMPLE-BUCKET」。external_location パラメータの詳細については、CTAS テーブルプロパティを参照してください。

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?