按需生成列统计数据 - AWS Glue

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

按需生成列统计数据

您可以按需运行 AWS Glue Data Catalog 表任务的列统计任务,无需设定计划。此选项对于即席分析或需要立即计算统计数据时非常有用。

按照以下步骤使用 AWS Glue 控制台或根据需要为数据目录表生成列统计信息 AWS CLI。

AWS Management Console
使用控制台生成列统计数据
  1. 登录 AWS Glue 控制台,网址为https://console.aws.amazon.com/glue/

  2. 选择 Data Catalog 表。

  3. 从列表中选择一个表。

  4. 操作菜单下选择生成统计数据

    您也可以在 “” 页下方的 “列统计信息” 选项卡下选择 “生成,按需生成” 选项。

  5. 按照中的步骤 7-11 为表生成列统计信息。按计划生成列统计信息

  6. 生成统计数据页面上,请指定以下选项:

    此屏幕截图显示了可用于生成列统计数据的选项。
    • 所有列 – 选择此选项可生成表中所有列的统计信息。

    • 选定列 – 选择此选项可生成特定列的统计数据。您可以从下拉列表中选择列。

    • IAMro le —选择创建具有运行列统计数据生成任务所需权限策略的新IAM角色。选择“查看权限详细信息”,查看政策声明。您也可以从列表中选择一个IAM角色。有关所需权限的更多信息,请参阅 生成列统计数据的先决条件

      AWS Glue 使用您指定的角色的权限来生成统计信息。

      有关为提供角色的更多信息 AWS Glue,请参阅的基于身份的策略。 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

此命令将启动一项任务,为指定表生成列统计信息。

按需更新列统计信息

维护 up-to-date列统计信息对于查询优化器生成高效的执行计划、确保提高查询性能、减少资源消耗和提高整体系统性能至关重要。在数据发生重大变化(例如批量加载或大量修改)之后,这一过程尤其重要,这可能会使现有的统计数据过时。

您需要从 AWS Glue 控制台显式运行 “生成统计信息” 任务才能刷新列统计信息。Data Catalog 不会自动刷新统计数据。

如果您没有在控制台中使用 AWS Glue统计信息生成功能,则可以使用UpdateColumnStatisticsForTableAPI操作或手动更新列统计信息 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 } } } ] }