You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带内部换行的CSV转Parquet后,AWS Crawler导入Athena异常求助

解决AWS Glue转Parquet后Crawler导入异常问题

核心问题根源

你的CSV包含内部换行,但Glue Job的CSV解析配置未处理这种场景,导致转Parquet时数据结构错乱,进而引发Crawler爬取异常。默认的CSV解析会把字段内的换行识别为新行,造成字段错位、数据格式混乱。

解决方案步骤

1. 修改Glue Job的CSV解析配置

更新format_options,添加多行解析和引号处理参数,确保Spark正确识别带内部换行的字段:

inputDyf = glueContext.create_dynamic_frame_from_options(
    connection_type = "s3", 
    connection_options = {"paths": [input_loc]}, 
    format = "csv",
    format_options={
        "withHeader": True,
        "separator": ",",
        "multiline": True,  # 开启多行解析,处理字段内换行
        "quoteChar": "\"",  # 指定字段包裹的引号(通常是双引号)
        "escapeChar": "\""  # 指定转义字符(如果字段内的引号用双引号转义)
    })

注:如果你的CSV用单引号包裹字段,把quoteChar和escapeChar改成"'即可。

2. 验证Parquet数据正确性

重新运行Glue Job后,直接用Athena查询Parquet路径验证数据:

SELECT * FROM "s3://your-parquet-output-location/" LIMIT 10;

确认字段值完整、行数匹配、没有错位情况,排除Parquet文件本身的问题。

3. 调整Crawler配置并重新爬取

  • 删除之前Crawler生成的错误表(避免元数据冲突)
  • 确保Crawler的分类器列表中,Parquet分类器优先级最高(防止误识别格式)
  • 重新启动Crawler,指定正确的数据库和表前缀

4. 可选:改用Spark原生API处理(如果DynamicFrame仍有问题)

如果Glue DynamicFrame的解析效果不佳,直接用Spark原生CSV读取API:

# 替换原有的inputDyf创建逻辑
df = spark.read.csv(
    input_loc,
    header=True,
    sep=",",
    quote='"',
    escape='"',
    multiLine=True,
    inferSchema=True  # 可选:自动推断字段类型,或手动指定schema
)
# 写入Parquet
df.write.mode("overwrite").parquet(output_loc)

内容的提问来源于stack exchange,提问作者Jhoanna Nikolas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:55:17