【发布时间】:2022-02-17 02:04:43
【问题描述】:
您好,我在 S3 中有一堆 CSV,这是一个通过 AWS Glue 设置的爬虫,该爬虫在扫描 10 个文件夹时构建了大约 10 个表,其中只有一个没有检测到标题。 csv 的结构与所有其他的相同。请指教?
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-glue
您好,我在 S3 中有一堆 CSV,这是一个通过 AWS Glue 设置的爬虫,该爬虫在扫描 10 个文件夹时构建了大约 10 个表,其中只有一个没有检测到标题。 csv 的结构与所有其他的相同。请指教?
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-glue
AWs 胶水爬虫根据多个规则解释标头。如果文件中的第一行不满足这些规则,则爬虫不会将第一行检测为标题,您需要手动执行此操作。这是一个非常常见的问题,我们在代码中集成了一个修复程序,这是我们数据管道的一部分。
摘自aws doco
要归类为 CSV,表架构必须至少有两个 列和两行数据。 CSV 分类器使用了许多 启发式方法来确定给定文件中是否存在标头。 如果分类器不能从第一行数据中确定一个表头, 列标题显示为 col1、col2、col3 等。这 内置 CSV 分类器确定是否通过 评估文件的以下特征:
潜在标题中的每一列都解析为 STRING 数据类型。
除了最后一列,潜在标题中的每一列都有 少于 150 个字符的内容。允许尾随 分隔符,文件的最后一列可以为空。
潜在标题中的每一列都必须符合 AWS Glue 正则表达式 列名的要求。
标题行必须与数据行充分不同。至 确定这一点,一个或多个行必须解析为 字符串类型。如果所有列都是 STRING 类型,则第一行 数据与后续行的差异不足以用作 标题。
【讨论】:
您可以在爬虫上使用自定义分类器来解决此问题:https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html
通常在分类器选项 列标题 部分中选择 有标题 可以解决问题,如果没有,可能需要在文本框中输入标题列表为此目的。
【讨论】:
因为您的列都被归类为字符串,所以这些列很可能违反了规则。在我的例子中,我有一个超过 150 个字符的列名,所以 Glue 将第一行作为数据读取,而不是标题,然后假设所有列都是字符串。
【讨论】: