AWS Glue Crawler无法提取CSV标头

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS Glue Crawler无法提取CSV标头相关的知识,希望对你有一定的参考价值。

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

我有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 '00',但这可能还不够。

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

谢谢阅读。

编辑:

感觉这与它有关source

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

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

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

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

答案

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

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

以上是关于AWS Glue Crawler无法提取CSV标头的主要内容,如果未能解决你的问题,请参考以下文章

AWS Glue Crawler 将 json 文件分类为 UNKNOWN

如何使用 AWS Glue Crawler 读取 PostgreSQL 表分区?

AWS Glue Crawler 为每个分区添加表?

通过 AWS Glue Crawler 识别并存储在数据目录中的表的异常

将文件上传到 S3 存储桶后,AWS Glue Crawler 的基于事件的触发器?

使用CloudFormation上的JdbcTargets指定Glue :: Crawler