

# 优化 Iceberg 表的查询性能
<a name="iceberg-column-statistics"></a>

Apache Iceberg 是一种面向超大型分析数据集的高性能开放表格式。AWS Glue 支持计算和更新 Iceberg 表中每列的不重复值（NDV）数量。借助这些统计数据，可以为处理大型数据集的数据工程师和科学家提供更好的查询优化、数据管理和性能效率。

 AWS Glue 会估算 Iceberg 表中每列的不重复值数量，并在 Amazon S3 中将结果存储与 Iceberg 表快照关联的 [Puffin](https://iceberg.apache.org/puffin-spec/) 文件中。Puffin 是一种 Iceberg 文件格式，专用于存储索引、统计数据和草图等元数据。通过将草图存储在与快照关联的 Puffin 文件中，可确保事务处理的一致性和 NDV 统计数据的新鲜度。

您可以使用 AWS Glue 控制台或 AWS CLI 来配置运行列统计数据生成任务。启动该进程时，AWS Glue 将在后台启动一个 Spark 作业并更新 Data Catalog 中的 AWS Glue 表元数据。您可以使用 AWS Glue 控制台、AWS CLI 或通过调用 [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html) API 操作来查看列统计数据。

**注意**  
如果使用 AWS Lake Formation 权限来控制对表的访问权限，则列统计数据任务代入的角色需要拥有表的完全访问权限才能生成统计数据。

**Topics**
+ [生成列统计数据的先决条件](iceberg-column-stats-prereqs.md)
+ [为 Iceberg 表生成列统计数据](iceberg-generate-column-stats.md)
+ [另请参阅](#see-also-iceberg-stats)

# 生成列统计数据的先决条件
<a name="iceberg-column-stats-prereqs"></a>

要生成或更新 Iceberg 表的列统计数据，统计数据生成任务将代表您代入一个 AWS Identity and Access Management（IAM）角色。根据向该角色授予的权限，列统计数据生成任务可以读取 Amazon S3 数据存储中的数据。

配置列统计数据生成任务时，AWS Glue 允许您创建包含 `AWSGlueServiceRole` AWS 托管式策略以及指定数据源所需内联策略的角色。

如果您指定将某个现有的角色用于生成列统计数据，请确保该角色包含 `AWSGlueServiceRole` 策略或等效策略（或此策略的范围缩小版本），以及所需的内联策略。

有关所需权限的更多信息，请参阅 [生成列统计数据的先决条件](column-stats-prereqs.md)。

# 为 Iceberg 表生成列统计数据
<a name="iceberg-generate-column-stats"></a>

使用 AWS Glue 控制台或 AWS CLI 或通过运行 **StartColumnStatisticsTaskRun** 操作，按照以下步骤配置在 Data Catalog 中生成统计数据的计划。

**生成列统计数据**

1. 通过以下网址登录到 AWS Glue 控制台：[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)。

1. 选择 Data Catalog 下的**表**。

1. 从列表中选择一个 Iceberg 表。

1. 在**操作**菜单下依次选择**列统计数据**、**按需生成**。

   您也可以选择**表**页面下半部分的**列统计数据**选项卡，然后选择**生成统计数据**按钮。

1. 在**生成统计数据**页面上，提供统计数据生成详细信息。按照[按计划生成列统计数据](generate-column-stats.md)部分中的第 6-11 步操作，为 Iceberg 表配置统计数据生成计划。

   您也可以按照[按需生成列统计数据](column-stats-on-demand.md)中的说明操作，选择按需生成列统计数据
**注意**  
Iceberg 表不支持采样选项。

   AWS Glue 会计算该 Iceberg 表中每列的不重复值的数量，并放入提交到您的 Amazon S3 位置中指定快照 ID 的新 Puffin 文件。

## 另请参阅
<a name="see-also-iceberg-stats"></a>
+ [查看列统计数据](view-column-stats.md)
+ [查看列统计数据任务运行](view-stats-run.md)
+ [停止列统计数据任务运行](stop-stats-run.md)
+ [删除列统计数据](delete-column-stats.md)