按需生成列统计数据
您可以按需为 AWS Glue Data Catalog 表任务运行列统计任务,无需设定计划。此选项对于临时分析或需要立即计算统计数据的场景非常实用。
按照以下步骤,使用 AWS Glue 控制台或 AWS CLI 按需为 Data Catalog 表生成列统计数据。
- AWS Management Console
-
使用控制台生成列统计数据
-
通过以下网址登录到 AWS Glue 控制台:https://console.aws.amazon.com/glue/。
-
选择 Data Catalog 表。
-
从列表中选择一个表。
-
在操作菜单下选择生成统计数据。
您也可以选择表页面下半部分的列统计数据选项卡,然后选择生成、按需生成选项。
按照按计划生成列统计数据中第 7-11 步的说明操作,生成表的列统计数据。
-
在生成统计数据页面上,请指定以下选项:
-
所有列 – 选择此选项可生成表中所有列的统计信息。
-
选定列 – 选择此选项可生成特定列的统计数据。您可以从下拉列表中选择列。
-
IAM 角色:选择创建新 IAM 角色,该角色应具有运行列统计数据生成任务所需的权限策略。选择“查看权限详细信息”,查看政策声明。您还可以从列表中选择 IAM 角色。有关所需权限的更多信息,请参阅 生成列统计数据的先决条件。
AWS Glue 代入您指定的角色权限,生成统计信息。
有关为 AWS Glue 提供角色的更多信息,请参阅 Identity-based policies for AWS Glue。
-
(可选)然后选择一种安全配置来启用日志静态加密。
-
样本行 – 仅从表中选择特定百分比的行来生成统计数据。默认值为所有行。使用向上和向下箭头可增加或减少百分比值。
我们建议选择表中的所有行,以计算出准确的统计数据。仅在可接受近似值时,才使用样本行来生成列统计数据。
选择生成统计数据以运行任务。
- AWS CLI
-
该命令将触发指定表的列统计任务运行。您需要提供数据库名称、表名称、具有统计数据生成权限的 IAM 角色,此外还可以提供列名和以及统计数据计算的样本容量百分比。
aws glue start-column-statistics-task-run \
--database-name 'database_name \
--table-name 'table_name' \
--role 'arn:aws:iam::123456789012:role/stats-role' \
--column-name 'col1','col2' \
--sample-size 10.0
该命令将启动一项任务,从而为指定表生成列统计数据。
按需更新列统计数据
确保列统计数据为最新,是查询优化器生成高效的执行计划、提高查询性能、减少资源消耗和提高整体系统性能的关键。这一过程在数据发生重大更改(例如批量加载或大量修改)之后尤为重要,因为这可能会使现有的统计数据过时。
您需要从 AWS Glue 控制台显式运行生成统计数据任务才能刷新列统计数据。Data Catalog 不会自动刷新统计数据。
如果您未使用控制台的使用 AWS Glue 统计数据生成功能,则可以使用 UpdateColumnStatisticsForTable API 操作或 AWS CLI 手动更新列统计数据。以下示例演示了如何使用 AWS CLI 更新列统计数据。
aws glue update-column-statistics-for-table --cli-input-json:
{
"CatalogId": "111122223333",
"DatabaseName": "database_name",
"TableName": "table_name",
"ColumnStatisticsList": [
{
"ColumnName": "col1",
"ColumnType": "Boolean",
"AnalyzedTime": "1970-01-01T00:00:00",
"StatisticsData": {
"Type": "BOOLEAN",
"BooleanColumnStatisticsData": {
"NumberOfTrues": 5,
"NumberOfFalses": 5,
"NumberOfNulls": 0
}
}
}
]
}