如何防止AWS Glue爬虫读取错误的数据类型?

问题描述 投票:0回答:3

我正在 CSV 文件上运行 AWS Glue 爬网程序。此 CSV 文件有一个字符串列,其中包含字母数字值。爬网程序正在将此列的数据类型设置为 INT(而不是字符串)。这导致我的 ETL 失败。有没有办法强制用胶水来纠正这个问题?我不想在爬虫中手动放置模式,因为这违背了自动数据编目的目的。

amazon-web-services boto3 aws-glue aws-glue-data-catalog
3个回答
2
投票

CSV 始终是一种难以处理的格式,尤其是当所有列都是字符串时。爬网程序无法区分标题和行。为了避免这种情况,您可以使用 Glue 分类器。将分类器的格式设置为 CSV,使用

Column headings
作为标题。将分类器添加到 Glue 爬虫。

确保删除该表并重新运行。爬虫运行后有时会无法拾取修改。


1
投票

爬虫架构检测

在第一次爬网程序运行期间,爬网程序会读取前 1,000 条记录或每个文件的第一个兆字节来推断架构。读取的数据量取决于文件格式和有效记录的可用性。


来自 Glue 开发人员文档

标题行必须与数据行有足够的不同。要确定这一点,必须将一行或多行解析为 STRING 类型以外的类型。如果所有列的类型均为 STRING,则第一行数据与用作标题的后续行没有足够的差异。

要绕过此问题,请创建一个新的 CSV 分类器,将 Column headers 设置为 Has headers 并将分类器添加到爬网程序。

如果分类器仍然无法根据您的需要创建 AWS Glue 表,请编辑表定义,将任何推断类型调整为

STRING
,将
SchemaChangePolicy
设置为 LOG,并将分区输出配置设置为
InheritFromTable
以供将来使用爬虫运行。


0
投票

我想知道您是否找到了解决方案?您最终是否手动定义了架构?谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.