

# 使用 AWS 分析服务查询元数据表
<a name="metadata-tables-bucket-integration"></a>

可以使用诸如 Amazon Athena、Amazon Redshift 和 Amazon EMR 等 AWS 分析服务查询 S3 托管式元数据表。

在可以运行查询之前，必须首先将您的 AWS 账户和区域中的 [AWS 托管式 S3 表存储桶与 AWS 分析服务集成](s3-tables-integrating-aws.md)。

## 使用 Amazon Athena 查询元数据表
<a name="metadata-tables-bucket-integration-athena"></a>

在[集成 AWS 托管式 S3 表存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)与 AWS 分析服务之后，可以开始在 Athena 中查询元数据表。在查询中，执行以下操作：
+ 将目录指定为 `s3tablescatalog/aws-s3`，并将数据库指定为 `b_general_purpose_bucket_name`（这通常是元数据表的命名空间）。
+ 确保将元数据表命名空间名称用引号 (`"`) 或反勾号 (```) 括起来，否则查询可能无法运行。

有关更多信息，请参阅[使用 Athena 查询 Amazon S3 表类数据存储服务](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-athena.html)。

还可以在 Athena 中从 Amazon S3 控制台运行查询。

### 使用 S3 控制台和 Amazon Athena
<a name="query-metadata-table-console"></a>

以下过程使用 Amazon S3 控制台访问 Athena 查询编辑器，以便您可以使用 Amazon Athena 查询表。

**查询元数据表**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**通用存储桶**。

1. 在**通用存储桶**选项卡上，选择存储桶，其中包含要查询的元数据表的元数据配置。

1. 在存储桶详细信息页面上，选择**元数据**选项卡。

1. 选择**使用 Athena 查询表**，然后为日记表或清单表选择一个示例查询。

1. Amazon Athena 控制台打开，Athena 查询编辑器随即出现，其中包含为您加载的示例 查询。根据您的用例需要修改此查询。

   在查询编辑器中，**目录**字段应填充 **s3tablescatalog/aws-s3**。**数据库**字段应填充用于存储表的命名空间（例如，**b\$1*general-purpose-bucket-name***）。
**注意**  
如果在**目录**和**数据库**字段中看不到这些值，请确保已在该区域中将 AWS 托管式表存储桶与 AWS 分析服务集成。有关更多信息，请参阅 [将 Amazon S3 表类数据存储服务与 AWS 分析服务集成](s3-tables-integrating-aws.md)。

1. 要运行查询，请选择 **Run**（运行）。
**注意**  
如果您在尝试在 Athena 中运行查询时收到错误“权限不足，无法执行查询。主体对指定的资源没有任何权限”，则必须向您授予对于表的必需 Lake Formation 权限。有关更多信息，请参阅 [授予对表或数据库的 Lake Formation 权限](grant-permissions-tables.md#grant-lf-table)。  
此外，确保您拥有查询元数据表的适当 AWS Identity and Access Management（IAM）权限。有关更多信息，请参阅 [用于查询元数据表的权限](metadata-tables-bucket-query-permissions.md)。
如果您在尝试运行查询时收到错误“Iceberg 无法访问所请求的资源”，请转到 AWS Lake Formation 控制台，并确保您已授予自己对您创建的表存储桶目录和数据库（命名空间）的权限。授予这些权限时请勿指定表。有关更多信息，请参阅 [授予对表或数据库的 Lake Formation 权限](grant-permissions-tables.md#grant-lf-table)。

## 使用 Amazon Redshift 查询元数据表
<a name="metadata-tables-bucket-integration-redshift"></a>

在[集成 AWS 托管式 S3 表存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)与 AWS 分析服务集成后，请执行以下操作：
+ [创建资源链接](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html#database-link-tables)，该链接指向元数据表命名空间（通常为 `b_general_purpose_bucket_name`）。
+ 确保将元数据表命名空间名称用引号 (`"`) 或反勾号 (```) 括起来，否则查询可能无法运行。

完成后，可以开始在 Amazon Redshift 控制台中查询元数据表。有关更多信息，请参阅[使用 Amazon Redshift 访问 Amazon S3 表类数据存储服务](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-redshift.html)。

## 使用 Amazon EMR 查询元数据表
<a name="metadata-tables-bucket-integration-emr"></a>

要使用 Amazon EMR 查询元数据表，需要创建为 Apache Iceberg 配置的 Amazon EMR 集群，然后使用 Apache Spark 连接到元数据表。可以通过将 AWS 托管式 S3 表存储桶与 AWS 分析服务集成，或者使用适用于 Iceberg 的开源 Amazon S3 表类数据存储服务目录客户端目录，来对此进行设置。

**注意**  
在 Amazon EMR 或其它第三方引擎上使用 Apache Spark 查询元数据表时，建议您使用 Amazon S3 表类数据存储服务 Iceberg REST 端点。如果不使用此端点，查询可能无法成功运行。有关更多信息，请参阅 [使用 Amazon S3 表类数据存储服务 Iceberg REST 端点访问表](s3-tables-integrating-open-source.md)。

 有关更多信息，请参阅[使用 Amazon EMR 访问 Amazon S3 表类数据存储服务](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-emr.html)。