我正在 CSV 文件上运行 AWS Glue 爬网程序。此 CSV 文件有一个字符串列,其中包含字母数字值。爬网程序正在将此列的数据类型设置为 INT(而不是字符串)。这导致我的 ETL 失败。有没有办法强制用胶水来纠正这个问题?我不想在爬虫中手动放置模式,因为这违背了自动数据编目的目的。
CSV 始终是一种难以处理的格式,尤其是当所有列都是字符串时。爬网程序无法区分标题和行。为了避免这种情况,您可以使用 Glue 分类器。将分类器的格式设置为 CSV,使用
Column headings
作为标题。将分类器添加到 Glue 爬虫。
确保删除该表并重新运行。爬虫运行后有时会无法拾取修改。
在第一次爬网程序运行期间,爬网程序会读取前 1,000 条记录或每个文件的第一个兆字节来推断架构。读取的数据量取决于文件格式和有效记录的可用性。
来自 Glue 开发人员文档:
标题行必须与数据行有足够的不同。要确定这一点,必须将一行或多行解析为 STRING 类型以外的类型。如果所有列的类型均为 STRING,则第一行数据与用作标题的后续行没有足够的差异。
要绕过此问题,请创建一个新的 CSV 分类器,将 Column headers 设置为 Has headers 并将分类器添加到爬网程序。
如果分类器仍然无法根据您的需要创建 AWS Glue 表,请编辑表定义,将任何推断类型调整为
STRING
,将 SchemaChangePolicy
设置为 LOG,并将分区输出配置设置为 InheritFromTable
以供将来使用爬虫运行。
我想知道您是否找到了解决方案?您最终是否手动定义了架构?谢谢!