我已经无计可施了……
我有 15 个 csv 文件,它们是通过直线查询生成的,例如:
beeline -u CONN_STR --outputformat=dsv -e "SELECT ... " > data.csv
I chose dsv
因为某些字符串字段包含逗号并且不加引号,这会更加破坏粘合性。此外,根据文档,内置的 csv 分类器可以处理管道(并且在大多数情况下,确实如此)。
不管怎样,我将这 15 个 csv 文件上传到 s3 存储桶并运行我的爬虫。
一切都很好。对于其中 14 个人来说。
Glue 能够提取除一个文件之外的每个文件的标题行,并命名列col_0
, col_1
等,并在我的选择查询中包括标题行。
任何人都可以深入了解导致此问题的这个文件可能有什么不同吗?
如果有帮助的话,我感觉这个 csv 文件中的某些字段可能在某些时候被编码为 UTF-16 或其他格式。刚打开的时候,有一些奇怪的“?”。角色漂浮在周围。
我已经跑了tr -d '\000'
试图清理它,但这可能还不够。
再说一遍,我可以运行的任何线索、建议或实验都很棒。顺便说一句,我希望爬虫能够执行所有操作(即:不需要手动更改架构并关闭更新)。
谢谢阅读。
Edit:
感觉这与它有关source https://docs.aws.amazon.com/glue/latest/dg/add-classifier.html#classifier-built-in:
潜在标头中的每一列都会解析为 STRING 数据类型。
除最后一列外,潜在标题中的每一列的内容都少于 150 个字符。为了允许尾随分隔符,整个文件的最后一列可以为空。
潜在标题中的每一列都必须满足列名称的 AWS Glue 正则表达式要求。
标题行必须与数据行有足够的不同。要确定这一点,必须将一行或多行解析为 STRING 类型以外的类型。如果所有列的类型均为 STRING,则第一行数据与用作标题的后续行没有足够的差异。