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

AWS Glue读取含双引号CSV丢失行的解决方法咨询

解决Glue Catalog读取含双引号CSV的问题

当CSV字段包含未正确转义的双引号时,Glue默认的CSV解析规则会错误地将多行合并为一行,导致实际加载的行数远少于预期。以下是几种可行的解决办法:

方法1:修改Glue Catalog表的解析参数

直接在Glue控制台或通过API调整目标表的CSV解析配置:

  • 配置quoteChar为",escapeChar根据CSV实际转义方式设置:如果双引号是用双引号转义(比如"He said ""hello"""),就把escapeChar也设为";如果是反斜杠转义,就设为\。
  • 检查并移除可能冲突的解析参数,确保规则统一。

修改完成后重新运行原代码,Glue就能正确解析带双引号的字段了。

方法2:改用from_options自定义解析规则

如果不想修改Catalog表参数,可以绕过Catalog直接用from_options方法指定解析规则,示例代码:

df_src_ev = glueContext.create_dynamic_frame.from_options(
    connection_type="s3",
    connection_options={"paths": ["s3://your-bucket/csv-path/"]},
    format="csv",
    format_options={
        "quoteChar": "\"",
        "escapeChar": "\"",  # 按实际转义方式调整,反斜杠转义就改成"\\"
        "withHeader": True,
        "separator": ","
    },
    transformation_ctx="df_src_ev",
    push_down_predicate=str_predicate
)

这种方式不受Catalog表参数限制,能灵活适配特殊格式的CSV。

方法3:用Spark原生API读取后转Dynamic Frame

如果前两种方法都不适用,可借助Spark的CSV解析能力先读取文件,再转为Dynamic Frame:

# Spark读取CSV并配置解析规则
spark_df = spark.read.option("quote", "\"") \
    .option("escape", "\"") \
    .option("header", "true") \
    .csv("s3://your-bucket/csv-path/")

# 转换为Glue Dynamic Frame
df_src_ev = DynamicFrame.fromDF(spark_df, glueContext, "df_src_ev")

Spark的CSV解析器对特殊字符的处理更健壮,适合复杂格式的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:40:05