使用Spark DataFrame读取数据时如何保留输入中的双引号?
解决方案:Spark读取CSV时完整保留含特殊字符的字段内容
问题根源
- 配置
escape="\""时,Spark会自动将字段内的""转义为单个",破坏原内容格式 - 未配置
escape时,Spark无法识别""为内容的一部分,会把字段内的逗号当作分隔符,导致字段被错误拆分
正确读取代码
要完整保留原字段(包括外部引号、内部双引号对和逗号),使用以下配置读取:
df = spark.read \ .option("header", "false") \ .option("quote", '"') \ .option("escape", "\u0001") \ .option("keepQuotes", "true") \ .csv(output_path)
参数作用说明
quote="\"":指定双引号为字段包裹符,确保引号内的所有内容(包括逗号)被识别为单个字段,不会被拆分escape="\u0001":选用一个文件中不存在的特殊字符作为转义符,避免Spark将字段内的""解析为转义字符,从而保留原内容中的双引号对keepQuotes="true":保留字段外部的双引号,保证读取结果与原内容完全一致
配置后,目标字段会完整保留为:"The Good, the Bad and the Ugly (From ""The Good, the Bad and the Ugly"")",且不会在逗号处被拆分。
内容的提问来源于stack exchange,提问作者Regina Remenyi
相关产品推荐
相关产品推荐

