AWS Glue 爬网程序无法提取 CSV 标头

2024-01-10

我已经无计可施了……

我有 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,则第一行数据与用作标题的后续行没有足够的差异。


添加一个自定义分类器 https://docs.aws.amazon.com/glue/latest/dg/add-classifier.html修复了我的类似问题。

您可以通过设置来避免标题检测(当所有列都是字符串类型时,这不起作用)ContainsHeader to PRESENT创建自定义分类器时,然后通过提供列名称Header。创建自定义分类器后,您可以将其分配给爬网程序。由于这已添加到爬网程序中,因此您无需在事后对架构进行更改,并且不会冒这些更改在下一次爬网程序运行中被覆盖的风险。使用 boto3,它看起来像:

import boto3


glue = boto3.client('glue')

glue.create_classifier(CsvClassifier={
    'Name': 'contacts_csv',
    'Delimiter': ',',
    'QuoteSymbol': '"',
    'ContainsHeader': 'PRESENT',
    'Header': ['contact_id', 'person_id', 'type', 'value']
})

glue.create_crawler(Name=GLUE_CRAWLER,
                    Role=role.arn,
                    DatabaseName=GLUE_DATABASE,
                    Targets={'S3Targets': [{'Path': s3_path}]},
                    Classifiers=['contacts_csv'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS Glue 爬网程序无法提取 CSV 标头 的相关文章

  • 使用 FileSystemObject 读取和写入 csv 文件

    是否可以使用 VBA 中的 FileSystemObject 读取和写入 csv 文件 必然是 基本语法如 Set objFSO CreateObject scripting filesystemobject create a csv fi
  • 番石榴表到 CSV

    我正在尝试将 Guava 表导出到 CSV 下面的代码有效 但它跳过了我也想在输出中看到的第一列 你能提出什么建议吗 编辑 显然使用values and keySet 单独工作 final RowSortedTable
  • 将 CSV 导入 Excel - 自动“文本到列”和“插入表格”

    我想在 Excel 2010 上打开 CSV 逗号分隔 文件并自动将文本转换为列 然后选择所有活动单元格并插入带标题的表格 是否可以在我的功能区中添加一个按钮来为我完成这一切 我经常使用不同大小的 CSV 文件 我发现每次手动执行此操作有点
  • Rails csv 格式的原始查询,通过控制器返回

    我使用 Active Record 来获取我的故事 然后生成 CSV 这是在 Rails Cast 中完成的标准方法 但我有很多行 需要几分钟 我想如果我能让 posgresql 来做 csv 渲染 那么我可以节省一些时间 这是我现在所拥有
  • 降低计算精度以加快执行速度

    我有一个数据采集系统 可以进行几分钟的测量并生成一个包含 1000 万行和 10 列的 csv 文件 然后我在Python csv reader 中导入这个csv文件 对获取的数值数据执行一系列操作 但一次 只能 10000行 否则计算机内
  • Python 将列表中的字符串转换为数字

    我遇到了以下错误消息 以 10 为基数的 int 的文字无效 2 2 外部用单引号括起来 内部用双引号括起来 该数据位于primes列出使用print primes 0 样本数据在primes list 2 3 5 7 The primes
  • 如何使用Shiny中的下载按钮?

    我想下载一个csv使用 Shiny 中的下载按钮下载文件 该文件将使用辅助 r 脚本中的参数创建 SERVER output downloadData lt downloadHandler filename function paste d
  • pandas read_csv 之前预处理数据文件

    我使用 SAP 的数据输出 但它既不是 CSV 因为它不引用包含其分隔符的字符串 也不是固定宽度 因为它具有多字节字符 它是一种 固定宽度 字符 为了将其放入 pandas 我当前读取文件 获取分隔符位置 对分隔符周围的每一行进行切片 然后
  • 我应该使用 AWK 或 SED 删除 CSV 文件中引号之间的逗号吗? (重击)

    我有一堆日常打印机登录CSV格式 我正在编写一个脚本来跟踪使用了多少纸张并将信息保存到数据库中 但我遇到了一个小问题 本质上 日志中的一些文档名称中包含逗号 全部用双引号引起来 并且由于它采用逗号分隔格式 所以我的代码搞乱了并将所有内容推到
  • 如何仅读取 CSV 文件每行的第一列 [重复]

    这个问题在这里已经有答案了 如何在Python中读取CSV文件每行的第一列 我的数据是这样的 1 abc 2 bcd 3 cde 我只需要循环第一列的值 另外 当我在 calc 中打开 csv 文件时 每行中的数据都在同一个单元格中 这正常
  • Python将csv数据导出到文件中

    我有以下运行良好的代码 但我无法修剪数据并将其存储在数据文件中 import nltk tweets love this car this view amazing not looking forward the concert def g
  • 如何定义导入mongodb的分隔符

    我有一个数据集合 它由 特点 我将把数据收集添加到mongodb 所以我需要通过分离数据 特点 怎么样我的蒙戈进口公司命令看起来像 之前我已经成功导入csv通过以下命令创建文件 mongoimport d mydb c things typ
  • 将对象列表写入 csv 文件

    我正在编写一个 python 程序 该程序循环遍历 reddit 提交 提取数据并将其作为对象存储在列表中 但是 我无法将该列表写入 csv 文件 文件已创建 但它只是为对象提供某种 id 标记 我应该如何更改 csv 代码 Code im
  • Python + Pandas + dataframe:无法将一个数据帧附加到另一个数据帧

    我有两个大的 CSV 文件 我已将它们转换为 Pandas 数据框 它们都有相同名称和相同顺序的列 event name category category id description 我想将一个数据帧附加到另一个数据帧 最后想将生成的数
  • 如何在不加载到内存的情况下对大型 csv 文件进行排序

    我有 20GB csv 文件 如下所示 CallId MessageNo Information Number 1000 1 a 2 99 2 bs 3 1000 3 g 4 66 2 a 3 20 16 3 b 1000 7 c 4 99
  • 如何使用 PowerShell 将多个文本文件的列合并到一个 csv 文件中?

    我有多个测量文件 每个文件包含一列数字数据 Update 该脚本应该适用于可变数量的测量文件 数据1 dat 1 0 2 0 3 0 数据2 dat 10 0 20 0 30 0 数据N dat 1 1 1 如何使用以下命令将这些数据文件合
  • 创建一个 .rwl 对象

    我有一些树数据想要处理dplr包裹 我的问题是我只有 Excel 文件形式的数据 因此我将数据导出为 csv 然后将其输入 R 中 a lt read csv file 我需要将这些数据转换为 rwl能够运行一些dplr功能 我的猜测是我需
  • CSV 提供的数据源第一列中存在奇数字符

    我有一个 CSV 文件 已添加到 Visual Studio 单元测试项目中 它有七列 如下所示 assessmentitemid reviewer1 reviewer2 reviewer3 reviewer4 reviewer5 revi
  • 如何在 T-SQL 中将 CSV 转换为记录集?

    在我的存储过程中 我传递一个过滤器 使用 WHERE Column IN 子句 作为参数 参数值以 CSV 形式给出 将此 CSV 转换为记录集的最佳方法是什么 例子 SELECT FROM Employee WHERE Name IN J
  • 对 CSV 文件中的列进行分组并连接另一列的值

    我刚刚开始使用 PowerShell 在任何地方都找不到这个问题的答案 尝试编写一个脚本来导入 CSV 文件并搜索该文件以查看是否有任何名称相同 如果名称相同 我想将所有这些值写在同一行上 并且只显示名称一次 例如 Name Number

随机推荐