

# 使用 Hudi 元数据提高性能
<a name="querying-hudi-metadata-table"></a>

Apache Hudi 有一个[元数据表](https://hudi.apache.org/docs/next/metadata/)，其中包含用于提高性能的索引功能，例如文件列表、使用列统计数据跳过数据以及基于布隆筛选器的索引。

在这些功能中，Athena 目前仅支持文件列表索引。文件列表索引通过从维护分区到文件映射的索引中获取信息，从而消除了“列表文件”之类的文件系统调用。这样就无需以递归方式列出表路径下的每个分区即可查看文件系统。当您处理大型数据集时，这种索引可以大大减少写入和查询期间获取文件列表时出现的延迟。还可以避免诸如 Amazon S3 `LIST` 调用的请求限制节流之类的瓶颈。

**注意**  
Athena 目前不支持数据跳过或布隆筛选器索引。

## 启用 Hudi 元数据表
<a name="querying-hudi-metadata-table-enabling-the-hudi-metadata-table"></a>

默认情况下，禁用基于元数据表的文件列表。要启用 Hudi 元数据表和相关的文件列表功能，请将 `hudi.metadata-listing-enabled` 表格属性设置为 `TRUE`。

**示例**  
以下 `ALTER TABLE SET TBLPROPERTIES` 示例在示例 `partition_cow` 表上启用元数据表。

```
ALTER TABLE partition_cow SET TBLPROPERTIES('hudi.metadata-listing-enabled'='TRUE')
```

## 使用引导程序生成的元数据
<a name="querying-hudi-hudi-dataset-table-types-bootstrap"></a>

从 Apache Hudi 版本 0.6.0 开始，引导启动操作功能可为现有的 Parquet 数据集提供更好的性能。引导操作只能生成元数据，使数据集保持原位，而不是重写数据集。

您可以使用 Athena 从引导启动操作中查询表，就像基于 Amazon S3 中数据的其他表一样。在您的 `CREATE TABLE` 语句中，在 `LOCATION` 子句指定 Hudi 表路径。

有关在 Amazon EMR 中使用引导启动操作创建 Hudi 表的更多信息，请参阅 AWS 大数据博客文章：[New features from Apache Hudi available in Amazon EMR](https://aws.amazon.com/blogs/big-data/new-features-from-apache-hudi-available-in-amazon-emr/)（在 Amazon EMR 中可用的 Apache Hudi 新功能）。