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

上次更新时间:2019 年 10 月 31 日

为什么 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 作业,将异常数据类型转换为正确或源中最常用的数据类型。或者,使用 Amazon Athena 手动创建使用现有表 DDL 的表,然后运行 AWS Glue 爬网程序更新表元数据。
  • 如果您的数据具有不同但相似的架构,您可以在创建爬网程序时合并兼容的架构。在配置爬网程序输出页面,S3 数据的分组行为(可选)下,选择为各 S3 路径创建单独架构。如果启用了该设置,且数据兼容,在指定包含路径中评估 Amazon S3 对象时,爬网程序将忽略具体架构的相似性。有关更多信息,请参阅如何为各 Amazon S3 包含路径创建单独架构
  • 当使用 CSV 数据时,请确保您使用的标头一致。如果您的某些文件具有标头而另一些没有,则爬网程序会创建多个表。

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?