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

讀取json列自動裝卸機和inferschema base64。

MerelyPerfect
新的貢獻者二世

我有json文件落在我們團有兩個字段,1。抵消(整數),2。值(base64)。

這個值與unicode列是json。所以他們派了base64。挑戰這是與100 +領域的json是非常大的。所以我們不能定義的模式。我們隻能有schemahints。所以自動裝卸機是最適合的。

我試著與schemahints自動裝卸機和其他選項。它總是選擇值作為字符串,無法解析json沒有提供模式。我想推斷出磚模式。感謝任何幫助。謝謝你提前。

附加sameple json !

3回複3

匿名
不適用

@MerelyPerfect /:

當使用自動裝卸機磚,推理的模式是基於前幾行數據。如果JSON文件有一個一致的結構,你可以嚐試將“inferSchema”選項設置為“true”的自動裝卸機的選擇。這將使自動裝卸機試圖推斷出該模式的前幾行數據。

這裏有一個例子如何使用模式推理的自動裝卸機磚:

python

從pyspark.sql。功能導入from_json,從pyspark.sql坳。類型進口StructType、StructField IntegerType StringType #定義模式提示schema_hints = StructType ([StructField(“抵消”IntegerType ()), StructField(“價值”,StringType()))) #定義自動裝卸機選擇選項={“模式”:schema_hints.json (),“inferSchema”:“true”} #加載數據使用Autoloader df = spark.read.format (cloudFiles) \ .options(* *選項)\ .load (“abfss: / /(電子郵件保護)/ myfolder / * . JSON) #解析”價值從base64 JSON df = df”專欄。withColumn(“價值”,from_json(坳(“價值”).cast(“字符串”),schema_hints(“價值”).dataType)) #顯示結果DataFrame df.show ()

在這個例子中,我們首先定義模式提示兩個字段,“抵消”和“價值”。然後,我們定義自動裝卸機選項和“inferSchema”設置為“true”。這告訴自動裝卸機試圖推斷出從數據的模式。

然後我們使用自動裝卸機加載數據和解析“價值”列從base64 JSON使用

from_json函數。最後,我們展示結果DataFrame。

如果JSON文件有一個更複雜的結構,無法推斷出的前幾行數據,您可能需要手動定義模式使用提示。

MerelyPerfect
新的貢獻者二世

json是複雜的嵌套10到15水平。所以手動定義json模式是不可能的,不易於維護,因為它的變化。

上麵的代碼並不奏效。

我需要考慮另一種方式。

我可以重寫json消息到另一個json文件,僅僅通過二進製轉換為json。

無論我嚐試,它將二進製數據和把它寫成的json字符串。我怎麼能把它寫成json不定義json的模式。

所有可能的方法寫base64轉義字符串形式的價值。

如。輸出的樣子

{

“抵消”:1、

“價值”:“{\“key1 \”, \“價值\”..................}”

}

匿名
不適用

嗨@MerelyPerfect每

希望一切都好!隻是想檢查如果你能解決你的問題,你會很高興分享解決方案或答案標記為最佳?其他的請讓我們知道如果你需要更多的幫助。

我們很想聽到你的聲音。

謝謝!

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

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

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

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

Baidu
map