取消
顯示的結果
而不是尋找
你的意思是:

如何防止spark-csv dataframe JSON字符串添加引號

傳銷
新的因素

我有一個sql dataframe專欄,有一個json字符串(例如:{“關鍵”:“價值”})。當我使用spark-csv保存dataframe它改變字段值為“{”“關鍵”“:”“valule”“}”。有辦法把它關掉嗎?

5回複5

User16752241260
新的貢獻者二世

嚐試創建一個定製模式代表列作為JSONObject當你創建DataFrame和應用模式

User16765128951
因素二世

我可以關掉,通過設置引用選項是一個空白。這是我不確定的問題如何埃斯佩斯字符串可以包含分隔符——”、“——或者你設置。如果你確定沒有一個字符串劃界字符,你應該沒事的。

(df .repartition (1) .write .format (com.databricks.spark.csv) .option .option(“標題”、“true”)(“引用”、“).save (“/ FileStore /測試”))

不僅你的答案是不正確的,它會導致JSON內容變得腐敗。因此,盡管它可能解決一個非常具體的問題你當時這樣做,它不是一個通用的解決方案。我想出了一個通用的解決方案,我在我自己對這個問題的回答

chaotic3quilibr
新的貢獻者三世

是的。關閉默認的方式逃避的雙引號字符(“)與反斜杠字符(\),您必須添加一個.option使用正確的參數()方法調用後.write()方法調用。選擇()方法調用的目標是改變csv()方法的“發現”實例“引用”的性格。要做到這一點,你必須改變默認的“引用”實際上意味著什麼;即改變尋求從一個雙引號字符(\ u0000“)一個Unicode字符(本質上提供Unicode NUL字符不會發生在一個完整的JSON文檔)。

val dataFrame =火花。sql (“SELECT * FROM some_table_with_a_json_column”) val unitEmitCsv = dataframe .write .option(“標題”,真的).option(“引用”、“\ u0000”) / /魔法發生. csv (“/ FileStore / temp.csv”)

這隻是其中之一試圖使用Apache火花和所學到的發射. csv文件。和上下文的更多信息,請參見我寫的博客名為“示例Apache火花ETL管道集成一個SaaS”。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map