今天用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()
手机扫一扫
移动阅读更方便
你可能感兴趣的文章