首页 > 技术文章 > Spark保存的时候怎么去掉多余的引号转义

henrytee 2020-09-02 22:38 原文

 今天用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()

 

 

推荐阅读