Amazon S3 中的表位置 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon S3 中的表位置

当您运行CREATE TABLE查询 Athena 您将表注册到Amazon Glue数据目录。(如果您使用的是 Athena 较旧的内部目录,我们强烈建议您使用升级添加到Amazon Glue数据目录。)

要在 Amazon S3 中指定数据的路径,请使用LOCATION属性,如以下示例所示:

CREATE EXTERNAL TABLE `test_table`( ... ) ROW FORMAT ... STORED AS INPUTFORMAT ... OUTPUTFORMAT ... LOCATION s3://bucketname/folder/
  • 有关对存储桶命名的信息,请参阅存储桶限制中的Amazon Simple Storage Service 开发人员指南

  • 有关在 Amazon S3 中使用文件夹的信息,请参阅使用文件夹中的Amazon Simple Storage Service 控制台用户指南。

这些区域有:LOCATION在 Amazon S3 中指定全部表示您的表的文件。

重要

Athena 读取全部数据存储在中s3://bucketname/folder/'。如果你有你做的数据希望 Athena 读取这些数据,请不要在与您希望 Athena 读取的数据所在的相同 Amazon S3 文件夹中存储这些数据。如果您在利用分区来确保 Athena 扫描某个分区中的数据,则您的WHERE过滤器必须包含该分区。有关更多信息,请参阅表位置和分区

CREATE TABLE 语句中指定 LOCATION 时,请使用以下准则:

  • 使用尾部斜杠。

    使用:

    s3://bucketname/folder/
  • 请勿使用以下任何项目来指定数据的 LOCATION

    • 请勿使用文件名、下划线、通配符或 glob 模式来指定文件位置。

    • 请勿将完整 HTTP 表示法(例如)添加到s3.amazon.com添加到 Amazon S3 存储桶路径。

    • 请勿指定 Amazon S3访问点中的LOCATION子句。表位置只能指定为 URI。

    • 请勿使用空文件夹(如)//,如下所示:S3://bucketname/folder//folder/。 虽然这是有效的 Amazon S3 路径,但 Athena 不允许并会将其更改为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属性作为基本路径,以列出并随后扫描所有可用文件。但是,您必须在查询已分区的表之前更新Amazon Glue包含分区信息的数据目录。此信息表示特定分区中文件的架构,以及LOCATIONAmazon S3 中的文件。

当 Athena 对已分区的表运行查询时,它检查以确认在WHERE子句。如果使用了分区列,Athena 请求Amazon Glue数据目录:返回与指定分区列匹配的分区规范。分区规范包括LOCATION属性,告知 Athena 在读取数据时应使用哪些 Amazon S3 前缀。在这种情况下, 扫描使用此前缀存储的数据。如果您不使用WHERE子句,Athena 将扫描属于表分区的所有文件。

有关在 Athena 中使用分区来提升查询性能和降低查询成本的示例,请参阅Amazon Athena 的热门性能调节技巧