指定 Crawler 允许创建的最大表数 - AWS Glue

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

指定 Crawler 允许创建的最大表数

您可以选择TableThreshold通过 AWS Glue控制台或CLI指定,来指定允许爬虫创建的最大表数。如果爬网程序在其爬取过程中检测到的表数大于此输入值,则爬取失败且不会向 Data Catalog 写入任何数据。

当爬网程序检测和创建的表数比预期表数要大得多时,此参数非常有用。这可能有多种原因,例如:

  • 使用 AWS Glue 任务填充您的 Amazon S3 位置时,您最终可能会看到与文件夹处于同一级别的空文件。在这种情况下,当您在此 Amazon S3 位置运行爬网程序时,由于文件和文件夹位于同一级别,爬网程序会创建多个表。

  • 如果没有配置 "TableGroupingPolicy": "CombineCompatibleSchemas",您最终得到的表数可能比预期数量多。

您可以将 TableThreshold 指定为一个大于 0 的整数值。该值根据每个爬网程序进行配置。也就是说,每次爬取都会考虑该值。例如:爬网程序的 TableThreshold 值设置为 5。在每次抓取中,都会将检测到的表数目与该表的阈值 (5) 进行比 AWS Glue 较,如果检测到的表数小于 5,则 AWS Glue 将这些表写入数据目录,如果没有,则在不写入数据目录的情况下,抓取就会失败。

控制台

TableThreshold使用 AWS 控制台进行设置,请执行以下操作:

AWS 控制台的输出和调度部分显示了最大表阈值参数。
CLI

TableThreshold使用以下方法进行设置 AWS CLI:

"{"Version":1.0, "CrawlerOutput": {"Tables":{"AddOrUpdateBehavior":"MergeNewColumns", "TableThreshold":5}}}";

记录错误消息以帮助您识别表路径和清理数据。爬网程序因表数大于提供的表阈值而失败时您账户中的日志示例:

Table Threshold value = 28, Tables detected - 29

在中 CloudWatch,我们将检测到的所有表格位置记录为一条INFO消息。将错误记录为失败原因。

ERROR com.amazonaws.services.glue.customerLogs.CustomerLogService - CustomerLogService received CustomerFacingException with message The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. Failing crawler without writing to Data Catalog. com.amazonaws.services.glue.exceptions.CustomerFacingInternalException: The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. Failing crawler without writing to Data Catalog.