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