Spark保存的时候怎么去掉多余的引号转义
今天用SparkSQL保存一份json数据的时候,引号被转义了,并用括号包起来了,导致下游新来的小伙伴无法处理这份数据。
保存后的数据长这样(用\t分割):
data "{\"key\": \"impl\", \"version\": \"1.0\"}"
于是乎一番查找Spark文档,尝试添加这个选项之后,option('escapeQuotes', False),关闭引号转义,如此引号就不会被转义,结果如下:
data {"key": "impl", "version": "1.0"}
同样尝试了用RDD去保存,也不会出现双引号被转义的问题,只是用SparkSQL或者DataFrame的时候才会出现被双引号被转义的情况。
PySpark代码如下,spark公共变量请大佬们自己创建:
# encoding = utf-8 import json from utils import * def t1(): """ spark和sc变量放在utils文件里面 :return: """ data = ('data', json.dumps({'key': 'impl', 'version': '1.0'})) df = sc.parallelize([data], 1).toDF(['key', 'value']) df.write.mode('overwrite').option('sep', '\t').option('escapeQuotes', False).csv(file_save) if __name__ == '__main__': t1() # spark.stop()