AWS Glue Crawler无法提取CSV标头

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

我的智慧在这里结束......

我有15个csv文件,我从一个直线查询生成,如:

beeline -u CONN_STR --outputformat=dsv -e "SELECT ... " > data.csv

我之所以选择dsv,是因为有些字符串字段包含逗号而且没有引用它们,这更加突破了胶水。此外,根据文档,内置的csv分类器可以处理管道(大多数情况下,它都可以)。

无论如何,我将这15个csv文件上传到s3存储桶并运行我的爬虫。

一切都很好。其中14个。

Glue能够为每个文件提取标题行,除了一个,命名列col_0col_1等,并在我的选择查询中包括标题行。

任何人都可以提供任何有关这个文件可能会有什么不同的信息吗?

如果有帮助,我觉得这个csv文件中的某些字段在某些时候可能是用UTF-16编码的。当我最初打开它时,有一些奇怪的“?”浮动的人物。

为了清理它,我在它上面运行tr -d '\000',但这可能还不够。

同样,我可以运行的任何线索,建议或实验都会很棒。顺便说一句,我更喜欢爬虫能够做的一切(即:不需要手动更改架构并关闭更新)。

谢谢阅读。

编辑:

感觉这与它有关source

潜在标头中的每一列都作为STRING数据类型进行解析。

除最后一列外,潜在标题中的每一列都包含少于150个字符的内容。要允许尾随分隔符,最后一列可以在整个文件中为空。

潜在标头中的每一列都必须符合列名称的AWS Glue正则表达式要求。

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

csv amazon-athena aws-glue
1个回答
0
投票

是的,你对标题部分是正确的,如果CSV文件具有所有字符串数据,那么标题也将被视为字符串而不是标题。尝试在表属性中放置属性'skip.header.line.count'='1'。

关于“?”您应该使用十六进制编辑器来查看这些无效字符并从文件中删除它们。

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