在 Athena 中注册 S3 表存储桶目录
Amazon S3 表存储桶是 Amazon S3 中的一种存储桶类型,专门用于存储 Apache Iceberg 表中的表格数据。表存储桶可自动执行压缩、快照管理和垃圾回收等表管理任务,从而持续优化查询性能并尽可能降低成本。无论您是刚开始使用,还是已经在 Iceberg 环境中拥有数千个表,表存储桶都能简化任意规模的数据湖。有关更多信息,请参阅 Table Buckets。
注意事项和限制
-
不支持 CREATE TABLE、CREATE TABLE AS SELECT、CREATE VIEW 等 DDL 操作。
-
支持 SELECT、INSERT、UPDATE、DELETE 和 MERGE 等读写操作。
-
Athena 不支持在 S3 表存储桶中执行 CREATE TABLE 操作,因此必须使用其他引擎(例如 EMR 上的 Spark)或使用 S3 表 API 执行初始设置。
-
不支持重复使用查询结果。
-
如果在使用 CLI
Invalid choice: 's3tables'
时遇到错误,请务必升级到最新的 Amazon CLI 版本。
从 Athena 查询 S3 表存储桶之前需要完成的设置
从 Athena 查询 S3 表存储桶之前,请完成以下前提步骤
创建一个 S3 表存储桶。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的 Creating a table bucket。
创建一个表命名空间。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的 Create a namespace。
-
按照 Creating an Amazon S3 table 中的步骤创建一个 S3 表。
-
务必要按照《Amazon Simple Storage Service 用户指南》中 Prerequisites for integration 和 Integrating table buckets with Amazon analytics services 部分的说明,将表存储桶与 Amazon Glue Data Catalog 和 Amazon Lake Formation 成功集成。
注意
如果您在步骤 1 中从 S3 控制台创建 S3 表存储桶时启用了集成,则可跳过此步骤。
对于要用于从 Athena 提交查询的用户/角色,请通过 Lake Formation 控制台或 CLI 授予 Lake Formation 对 S3 表的权限。
使用上述获得授权的用户/角色从 Athena 提交查询。在此示例中,
s3tablescatalog
是通过集成创建的父级 Glue 数据目录,s3tablescatalog/
是为每个 S3 表存储桶创建的子 Glue 数据目录。查询的方法有两种。amzn-s3-demo-bucket
-
直接将子 Glue 目录 (
s3tablescatalog/
) 指定为目录。您可以通过控制台或 Amazon CLI 执行此操作。amzn-s3-demo-bucket
-
通过 Athena 控制台从子 Glue 数据目录创建 Athena 数据目录,并在查询中将其指定为目录。有关更多信息,请参阅 通过 Athena 控制台注册 S3 表存储桶目录。
-
通过 Athena 控制台注册 S3 表存储桶目录
要通过 Athena 控制台注册 S3 表存储桶目录,请执行以下步骤。
-
从 https://console.aws.amazon.com/athena/
打开 Athena 控制台。 -
在导航窗格中,选择数据来源和目录。
-
在数据来源和目录页面上,选择创建数据来源。
-
在选择数据来源中,选择 Amazon S3 - Amazon Glue Data Catalog。
-
在 Amazon Glue Data Catalog 部分中,对于数据来源账户,选择此账户中的 Amazon Glue Data Catalog。
-
对于创建表或注册目录,请选择注册新 Amazon Glue 目录。
-
在数据来源详细信息部分中,对于数据来源名称,请输入用于在 SQL 查询中指定数据来源的名称,或者使用生成的默认名称。
-
对于目录,选择浏览来搜索同一账户中的 Amazon Glue 目录列表。如果您看不到任何现有的目录,请通过 Amazon Glue
控制台创建一个。 -
在浏览 Amazon Glue 目录对话框中,选择要使用的目录,然后选中选择。
-
(可选)对于标签,输入要与该数据来源关联的键值对。
-
选择下一步。
-
在检查并创建页面上,验证输入的信息是否正确,然后选择创建数据来源。