教程:S3 表类数据存储服务入门
在本教程中,您将创建一个表存储桶,并将您区域中的表存储桶与 AWS 分析服务集成。接下来,您将使用 AWS CLI 或控制台在表存储桶中创建第一个命名空间和表。然后,可以开始使用 Athena 查询您的表。
提示
如果您要将表格数据从通用存储桶迁移到表存储桶,AWS 解决方案库提供了指导性解决方案来为您提供助力。此解决方案通过将 AWS Step Functions 和 Amazon EMR 与 Apache Spark 结合使用,自动将在 AWS Glue Data Catalog 中注册并存储在通用存储桶中的 Apache Iceberg 和 Apache Hive 表移到表存储桶。有关更多信息,请参阅 AWS 解决方案库中的将表格数据从 Amazon S3 迁移到 S3 表的指南
步骤 1:创建表存储桶并将其与 AWS 分析服务集成
在此步骤中,您使用 Amazon S3 控制台来创建第一个表存储桶。有关创建表存储桶的其它方法,请参阅 Creating a table bucket。
注意
默认情况下,Amazon S3 控制台会自动将表存储桶与 AWS Glue Data Catalog 集成,从而支持 AWS 分析服务自动发现和访问您的 S3 表类数据存储服务数据。如果您使用 AWS Command Line Interface(AWS CLI)、AWS SDK 或 REST API 以编程方式创建第一个表存储桶,则必须手动完成 AWS 分析服务集成。有关更多信息,请参阅 将 Amazon S3 表类数据存储服务与 AWS 分析服务集成。
登录到 AWS 管理控制台,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 在页面顶部的导航栏中,选择当前所显示 AWS 区域的名称。接下来,选择要在其中创建表存储桶的区域。
在左侧导航窗格中,选择表存储桶。
选择创建表存储桶。
在常规配置下,输入表存储桶的名称。
表存储桶名称必须满足以下要求:
在当前区域中对于您的 AWS 账户是唯一的。
长度必须介于 3 到 63 个字符之间。
只能由小写字母、数字和连字符 (
-) 组成。以字母或数字开头和结尾。
创建表存储桶后,便无法更改其名称。创建表存储桶的 AWS 账户拥有该存储桶。有关命名表存储桶的更多信息,请参阅表存储桶命名规则。
-
在与 AWS 分析服务集成部分中,确保选中启用集成复选框。
如果在使用控制台创建第一个表存储桶时选择了启用集成,则 Amazon S3 会尝试将表存储桶与 AWS 分析服务集成。这种集成可让您使用 AWS 分析服务来访问当前区域中的所有表。有关更多信息,请参阅 将 Amazon S3 表类数据存储服务与 AWS 分析服务集成。
选择 创建存储桶 。
步骤 2:创建表命名空间和表
对于此步骤,可以在表存储桶中创建一个命名空间,然后在该命名空间下创建一个新表。可以使用控制台或 AWS CLI 创建表命名空间和表。
重要
创建表时,请确保在表名称和表定义中全部使用小写字母。例如,请确保列名称全部为小写。如果表名称或表定义包含大写字母,则 AWS Lake Formation 或 AWS Glue Data Catalog 不支持该表。在这种情况下,Amazon Athena 等 AWS 分析服务将无法看到您的表,即使表存储桶与 AWS 分析服务集成,也不例外。
如果表定义包含大写字母,则在 Athena 中运行 SELECT 查询时会收到以下错误消息:“GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names.”
以下过程使用 Amazon S3 控制台通过 Amazon Athena 来创建命名空间和表。
创建表命名空间和表
登录到 AWS 管理控制台,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在左侧导航窗格中,选择表存储桶。
-
在表存储桶页面上,选择要在其中创建表的表存储桶。
-
在表存储桶详细信息页面上,选择使用 Athena 创建表。
-
在使用 Athena 创建表对话框中,选择创建命名空间,然后在命名空间名称字段中输入名称。命名空间名称必须为 1 到 255 个字符,并且在表存储桶中是唯一的。有效字符为 a–z、0–9 和下划线 (
_)。命名空间名称的开头不支持使用下划线。 -
选择创建命名空间。
-
选择使用 Athena 创建表。
-
Amazon Athena 控制台将打开,并出现 Athena 查询编辑器。查询编辑器中填充了一个可用于创建表的示例查询。修改此查询,以指定您希望表具有的表名称和列。
-
修改完查询后,选择运行来创建表。
如果表创建取得成功,则新表的名称将显示在 Athena 中的表列表中。当您导航回 Amazon S3 控制台时,刷新列表后,新表将出现在表存储桶的详细信息页面上的表列表中。
要使用以下 AWS CLI 示例命令在表存储桶中创建命名空间,然后在该命名空间下使用架构创建新表,请将 值替换为您自己的值。user input
placeholder
先决条件
-
将
AmazonS3TablesFullAccess策略附加到您的 IAM 身份。 -
安装 AWS CLI 版本 2.23.10 或更高版本。有关更多信息,请参阅《AWS Command Line Interface 用户指南》中的安装或更新最新版本的 AWS CLI。
通过运行以下命令,在表存储桶中创建新的命名空间:
aws s3tables create-namespace \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket\ --namespacemy_namespace通过运行以下命令,确认您的命名空间已成功创建:
aws s3tables list-namespaces \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket
通过运行以下命令,使用表架构创建新表:
aws s3tables create-table --cli-input-json file://mytabledefinition.json对于
mytabledefinition.json文件,请使用以下示例表定义:{ "tableBucketARN": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket", "namespace": "my_namespace", "name": "my_table", "format": "ICEBERG", "metadata": { "iceberg": { "schema": { "fields": [{"name": "id", "type": "int","required": true}, {"name": "name", "type": "string"}, {"name": "value", "type": "int"}] } } } }
步骤 3:在 Athena 中使用 SQL 查询数据
可以在 Athena 中使用 SQL 查询表。Athena 对于 S3 表类数据存储服务支持数据定义语言(DDL)、数据操作语言(DML)和数据查询语言(DQL)查询。
您可以从 Amazon S3 控制台或通过 Amazon Athena 控制台访问 Athena 查询。
以下过程使用 Amazon S3 控制台访问 Athena 查询编辑器,以便您可以使用 Amazon Athena 查询表。
查询表
登录到 AWS 管理控制台,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在左侧导航窗格中,选择表存储桶。
-
在表存储桶页面上,选择包含要查询的表的表存储桶。
-
在表存储桶详细信息页面上,选择要查询的表名称旁边的选项按钮。
-
选择使用 Athena 查询表。
-
Amazon Athena 控制台打开,Athena 查询编辑器随即出现,其中包含为您加载的示例
SELECT查询。根据您的用例需要修改此查询。 -
要运行查询,请选择 Run(运行)。
查询表
从 https://console.aws.amazon.com/athena/
打开 Athena 控制台。 -
查询表。下面是您可以修改的示例查询。确保将
替换为您自己的信息。user input placeholdersSELECT * FROM "s3tablescatalog/amzn-s3-demo-table-bucket"."my_namespace"."my_table" LIMIT 10 -
要运行查询,请选择 Run(运行)。