PySpark DataFrame保存为CSV时表头多引号问题求助
问题解决:PySpark CSV导出表头多余双引号
问题原因
- 参数拼写错误:你写的
delimitor是笔误,正确参数名是delimiter。 - 错误的
quote配置:设置quote=''会禁用字段的引号包裹,但Spark处理表头时,会用默认转义符(双引号)转义表头中的引号,导致出现三重引号的异常格式。 quoteAll不适用:该参数会强制所有字段(包括数值型)添加引号,不符合你数据部分部分字段不加引号的需求。
正确配置方案
使用quoteMode参数控制引号的应用范围,配合正确的分隔符参数,即可实现你期望的输出格式:
df.write.format('csv')\ .option('delimiter', ',')\ .option('quoteMode', 'NON_NUMERIC')\ .save(path)
配置说明
delimiter:指定CSV的字段分隔符为逗号,修正了原代码的拼写错误。quoteMode='NON_NUMERIC':仅对非数值类型的字段添加双引号包裹,完全匹配你的需求:- 表头(字符串类型)会被双引号包裹,输出为
"col1","col2","col3"。 - 数据部分的字符串字段(如
value1、value2)添加引号,数值字段(如value3、value6)不添加引号,与你期望的输出一致。
- 表头(字符串类型)会被双引号包裹,输出为
如果你的列名本身包含双引号(而非需要Spark自动添加),可以额外添加option('escape', '"')参数处理转义,但根据你的期望输出,此参数通常不需要。
内容的提问来源于stack exchange,提问作者Anirban
相关产品推荐
相关产品推荐

