如何配置AWS Glue Crawler读取数据集中包含逗号的CSV文件
AWS Glue Crawler适配竖线分隔CSV的配置方案
默认情况下Glue Crawler会把CSV默认识别为逗号分隔,同时不会自动处理你文件中的自定义分隔符、引号包裹规则、第二行的分隔线,因此会出现Athena解析异常的问题,按以下步骤配置即可解决:
1. 优先创建自定义CSV分类器
自定义分类器的优先级高于Crawler自动识别逻辑,可以完全匹配你的文件格式:
- 进入Glue控制台左侧【数据目录】-【分类器】,点击【添加分类器】
- 分类器类型选择
CSV,按如下参数配置:- 分类器名称:可自定义,例如
pipe_quoted_csv_classifier - 列分隔符:输入
| - 引号字符:选择
" - 包含标题:勾选(用第一行的内容作为表的列名)
- 要跳过的行:填写
1(跳过第一行表头后的第二行分隔线)
- 分类器名称:可自定义,例如
- 保存分类器后,打开对应Crawler的编辑页面,在【安全配置、可选分类器】步骤,将刚才创建的分类器添加到Crawler的关联分类器列表中,并调整到最高优先级。
2. (可选)手动校准数据目录表参数
如果运行Crawler后查询仍然异常,可直接修改Glue数据目录中生成的表属性,确保以下参数正确:
- 输入格式:
org.apache.hadoop.mapred.TextInputFormat - 输出格式:
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - SerDe序列化库:
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe - SerDe参数需包含以下配置:
field.delim=|quoteChar="serialization.format=|skip.header.line.count=2
修改完成后无需重新运行Crawler,直接到Athena执行查询即可正常解析数据,Address字段中的逗号不会被识别为分隔符。
内容的提问来源于stack exchange,提问作者Akshay
相关产品推荐
相关产品推荐

