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()

 

 

Tags: