本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon S3 中的表位置
当你在 Athena 中运行CREATE TABLE
查询时,Athena 会在数据目录中注册你的表 AWS Glue ,这是 Athena 存储元数据的地方。
要在 Amazon S3 中指定数据的路径,请使用 LOCATION
属性,如以下示例中所示:
CREATE EXTERNAL TABLE `test_table`(
...
)
ROW FORMAT ...
STORED AS INPUTFORMAT ...
OUTPUTFORMAT ...
LOCATION s3://bucketname
/folder
/
Amazon S3 中的 LOCATION
指定表示您的表的所有文件。
重要
Athena 会读取存储在您指定的 Amazon S3 文件夹中的全部数据。如果您有不希望 Athena 读取的数据,请不要在与您希望 Athena 读取的数据所在的相同 Amazon S3 文件夹中存储这些数据。如果您在使用分区确保 Athena 扫描某个分区中的数据,则 WHERE
筛选条件必须包括该分区。有关更多信息,请参阅表位置和分区。
在 CREATE TABLE
语句中指定 LOCATION
时,请使用以下准则:
-
使用尾部斜杠。
-
您可以使用 Amazon S3 文件夹或 Amazon S3 访问点别名的路径。有关 Amazon S3 访问点别名的信息,请参阅《Amazon S3 用户指南》中的为您的访问点使用存储桶式别名。
使用:
s3://bucketname
/folder
/
s3://access-point-name
-metadata
-s3alias/folder
/
请勿使用以下任何项目来指定数据的 LOCATION
。
-
请勿使用文件名、下划线、通配符或 glob 模式来指定文件位置。
-
请勿将完整 HTTP 表示法(例如
s3.amazon.com
)添加到 Amazon S3 存储桶路径。 -
请勿在路径中使用空文件夹(如
//
),如下所示:S3://
。虽然这是有效的 Amazon S3 路径,但 Athena 不允许并会将其更改为bucketname
/folder
//folder
/s3://
,删除额外的bucketname
/folder
/folder
//
。请勿使用:
s3://path_to_bucket s3://path_to_bucket/* s3://path_to_bucket/mySpecialFile.dat s3://bucketname/prefix/filename.csv s3://test-bucket.s3.amazon.com S3://bucket/prefix//prefix/ arn:aws:s3:::bucketname/prefix s3://arn:aws:s3:
<region>
:<account_id>
:accesspoint/<accesspointname>
https://<accesspointname>
-<number>
.s3-accesspoint.<region>
.amazonaws.com
表位置和分区
您的源数据可以基于一组列按 Amazon S3 文件夹(称为分区)分组。例如,这些列可以表示创建特定记录的年、月和日。
创建表时,您可以选择对其进行分区。当 Athena 针对未分区的表执行 SQL 查询时,它使用来自表分区定义的 LOCATION
属性作为基本路径,以列出并随后扫描所有可用文件。但是,在查询分区表之前,必须使用分区信息更新 AWS Glue 数据目录。此信息表示特定分区中文件的架构,以及该分区的文件在 Amazon S3 中的 LOCATION
。
-
要了解 AWS Glue 爬虫如何添加分区,请参阅 Crawler 如何确定何时创建分区? 在《AWS Glue 开发人员指南》中。
-
要了解如何配置爬网程序以使其为现有分区中的数据创建表,请参阅将多个数据源和爬网程序结合使用。
-
在 Athena 中,您还可以直接在表中创建分区。有关更多信息,请参阅在 Athena 中对数据进行分区。
Athena 对已分区的表运行查询时,它检查以确认在查询的 WHERE
子句中是否使用了任何分区列。如果使用分区列,Athena 会请求数据目录返回 AWS Glue 与指定分区列匹配的分区规范。分区规范包含 LOCATION
属性,从而告知 Athena 在读取数据时应使用哪个 Amazon S3 前缀。在这种情况下,仅 扫描使用此前缀存储的数据。如果不在 WHERE
子句中使用已分区的列,则 Athena 将扫描属于表的分区的所有文件。
有关在 Athena 中使用分区来提高查询性能和降低查询成本的示例,请参阅 Amazon Athena 的十大性能调整技巧