如何防止 AWS Glue 爬网程序创建多个表?

上次更新日期:2021 年 4 月 12 日

为什么 AWS Glue 爬网程序使用我的源数据创建了多个表,要如何避免这种情况?

简短描述

当您源数据的以下特征不同时,AWS Glue 爬网程序会创建多个表:

  • 格式(如 CSV、Parquet 或 JSON)
  • 压缩类型(如 SNAPPY、gzip 或 bzip2)
  • 架构

解决方法

检查爬网程序日志以识别导致爬网程序创建多个表的文件:

1.    打开 AWS Glue 控制台

2.    在导航窗格中,选择爬网程序

3.    选择爬网程序,然后选择日志链接可查看 Amazon CloudWatch 控制台上的日志。

4.    如果 AWS Glue 在爬网程序上次运行时创建了多个表,则日志会包含类似以下内容的条目:

[439d6bb5-ce7b-4fb7-9b4d-805346a37f88]
 INFO : Created table 
2_part_00000_24cab769_750d_4ef0_9663_0cc6228ac858_c000_snappy_parquet in
 database glue
[439d6bb5-ce7b-4fb7-9b4d-805346a37f88]
 INFO : Created table 
2_part_00000_3518b196_caf5_481f_ba4f_3e968cbbdd67_c000_snappy_parquet in
 database glue
[439d6bb5-ce7b-4fb7-9b4d-805346a37f88]
 INFO : Created table 
2_part_00000_6d2fffc2_a893_4531_89fa_72c6224bb2d6_c000_snappy_parquet in
 database glue

日志条目包括导致爬网程序创建多个表的文件的名称。要防止创建多个表,请执行以下操作:

  • 确认这些文件的架构、格式和压缩类型与其余的源数据相同。如果某些文件使用不同的架构(例如,模式 A 表示字段 X 是 INT 类型,架构 B 表示字段 X 是 BOOL 类型),您可以执行以下任一操作:
    • 运行 AWS Glue ETL 作业以使用 from_options 函数读取异常值数据,然后将异常值数据类型转换为源中正确或最常见的数据类型。
    • 使用 Amazon Athena 通过现有表 DDL 手动创建表。然后,运行 AWS Glue 爬网程序以使用从表格中沿用架构的爬网程序设置来更新表元数据。
  • 如果您的数据具有不同但相似的架构,您可以在创建爬网程序时合并兼容的架构。在 Configure the crawler's output(配置爬网程序输出)页面上的 Grouping behavior for S3 data (optional)(S3 数据的分组行为(可选))下,选择Create a single schema for each S3 path(为各 S3 路径创建单独架构)。如果启用了该设置,且数据兼容,在指定包含路径中评估 Amazon S3 对象时,爬网程序将忽略具体架构的相似性。有关更多信息,请参阅如何为各 Amazon S3 包含路径创建单独架构
  • 当使用 CSV 数据时,请确保您使用的标头一致。如果您的某些文件具有标头而另一些没有,则爬网程序会创建多个表。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?