在 Amazon S3 中查找查询输出文件 - Amazon Athena

在 Amazon S3 中查找查询输出文件

查询输出文件存储在采用以下路径模式的 Amazon S3 子文件夹中,除非在其配置覆盖了客户端设置的工作组中进行查询。当工作组配置覆盖客户端设置时,查询将使用工作组指定的结果路径。

QueryResultsLocationInS3/[QueryName|Unsaved/yyyy/mm/dd/]
  • QueryResultsLocationInS3 是由工作组设置或客户端设置指定的查询结果位置。有关更多信息,请参阅本文后面的指定查询结果位置

  • 以下子文件夹仅为从控制台运行且工作组配置未覆盖其结果路径的查询而创建。从 AWS CLI 或使用 Athena API 运行的查询将直接保存到 QueryResultsLocationInS3

    • QueryName 是要保存其结果的查询的名称。如果查询已运行但未保存,则使用 Unsaved

    • yyyy/mm/dd 是查询运行的日期。

CREATE TABLE AS SELECT 查询关联的文件存储在以上模式的 tables 子文件夹中。

识别查询输出文件

查询输出文件会按照查询名称、查询 ID 和查询运行日期保存到 Amazon S3 中的查询结果位置。每个查询的文件都使用 QueryID 命名,这是在每个查询运行时 Athena 为其分配的唯一标识符。

会保存以下文件类型:

文件类型 文件命名模式 描述

查询结果文件

QueryID.csv

QueryID.txt

DML 查询结果文件以逗号分隔值 (CSV) 格式保存。

DDL 查询结果保存为纯文本文件。

您可以在使用控制台时从控制台的 Results(结果)窗格下载这些文件,也可以从查询 History(历史记录)中下载。有关更多信息,请参阅 使用 Athena 控制台下载查询结果文件

查询元数据文件

QueryID.csv.metadata

QueryID.txt.metadata

DML 和 DDL 查询元数据文件以二进制格式保存,无法人为读取。文件扩展名对应于相关的查询结果文件。Athena 在使用 GetQueryResults 操作读取查询结果时会使用元数据。虽然可以删除这些文件,但我们不建议这样做,因为这样会丢失关于查询的重要信息。

数据清单文件

QueryID-manifest.csv

生成数据清单文件以跟踪当 INSERT INTO 查询运行时 Athena 在 Amazon S3 数据源位置创建的文件。如果查询失败,清单也将跟踪查询要写入的文件。清单对于识别由于查询失败而导致的孤立文件很有用。

要使用 AWS CLI 标识查询输出位置和结果文件,请运行 aws athena get-query-execution 命令,如以下示例所示。用查询 ID 替换 abc1234d-5efg-67hi-jklm-89n0op12qr34

aws athena get-query-execution --query-execution-id abc1234d-5efg-67hi-jklm-89n0op12qr34

该命令返回的输出类似于下方内容。有关每个输出参数的说明,请参阅 AWS CLI 命令参考中的 get-query-execution

{ "QueryExecution": { "Status": { "SubmissionDateTime": 1565649050.175, "State": "SUCCEEDED", "CompletionDateTime": 1565649056.6229999 }, "Statistics": { "DataScannedInBytes": 5944497, "DataManifestLocation": "s3://amzn-s3-demo-bucket/athena-query-results-123456789012-us-west-1/MyInsertQuery/2019/08/12/abc1234d-5efg-67hi-jklm-89n0op12qr34-manifest.csv", "EngineExecutionTimeInMillis": 5209 }, "ResultConfiguration": { "EncryptionConfiguration": { "EncryptionOption": "SSE_S3" }, "OutputLocation": "s3://amzn-s3-demo-bucket/athena-query-results-123456789012-us-west-1/MyInsertQuery/2019/08/12/abc1234d-5efg-67hi-jklm-89n0op12qr34" }, "QueryExecutionId": "abc1234d-5efg-67hi-jklm-89n0op12qr34", "QueryExecutionContext": {}, "Query": "INSERT INTO mydb.elb_log_backup SELECT * FROM mydb.elb_logs LIMIT 100", "StatementType": "DML", "WorkGroup": "primary" } }