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

BufferHolder超過Json壓扁

D3nnisd
新的貢獻者三世

在磚上,我們用下麵的代碼來平JSON在Python中。REST API的數據:

' ' '

df = spark.read.format (json)。選項(“頭”,“真正的”)。選項(“多行”,“真正的”)。負載(SourceFileFolder + sourcetable + * . json)

df2 = df.select (psf.explode(“價值”).alias (tmp)) .select (tmp . *)

df2.write.format(“δ”).save (DeltaLakeFolder)

' ' '

我們不知道他們的模式是改變盡可能通用。然而,隨著增長高於2.8 gb的json文件,我現在看到以下錯誤:

' ' '

引起的:. lang。IllegalArgumentException:不能長BufferHolder按大小168後因為規模增長超過大小限製2147483632

' ' '

json是這樣的:

' ' '

{

“@odata。上下文”:“RANDOMSTRING)”,

“價值”:(

{

“COL1”:空,

:“COL2 VAL2”,

:“COL3 VAL3”,

:“COL4 VAL4”,

:“COL5 VAL5”,

:“COL6 VAL6”,

:“COL8 VAL7”,

“COL9”: null

},

{

“COL1”:空,

:“COL2 VAL2”,

:“COL3 VAL3”,

:“COL4 VAL4”,

:“COL5 VAL5”,

:“COL6 VAL6”,

:“COL8 VAL7”,

“COL9”: null

},

{

“COL1”:空,

:“COL2 VAL2”,

:“COL3 VAL3”,

:“COL4 VAL4”,

:“COL5 VAL5”,

:“COL6 VAL6”,

:“COL8 VAL7”,

“COL9”: null

}

]

}

' ' '

我如何解決這個問題或者解決這個?

提前謝謝!

親切的問候,

丹尼斯

15日回複15

Hubert_Dudek1
尊敬的貢獻者三世

你也可以讀它比讀文本文件到內存抽樣和抽樣作為json。在閱讀文本文件很容易設置分區。所以它不是一個大的對象,但例如8:

抽樣= sc.textFile(源文件、8)df = spark.read.json(抽樣)

json文本如果有問題你可以使用地圖:清潔

抽樣= sc.textFile(源文件,8). map (lambda函數)df = spark.read.json(抽樣)

D3nnisd
新的貢獻者三世

嗨,謝謝你的回應!

我給這一試!

謝謝!

D3nnisd
新的貢獻者三世

用下麵的代碼:

抽樣= sc.textFile (SourceFileFolder + sourcetable +“*。json”, 8) df = spark.read。選項(“頭”,“真正的”)。選項(“多行”,“真正的”). json(抽樣)

我得到

org.apache.spark。SparkException:工作階段失敗而終止:任務2階段7.0失敗了4次,最近的失敗:在舞台上失去了任務2.3 7.0 (TID 113)(10.139.64.6執行人8):. io .換行符之前IOException:太多的字節:2147483648

我遺漏了什麼東西?

Dan_Z
尊敬的貢獻者

@Dennis D,這裏發生了什麼是,超過2 GB(2147483648字節)被加載到一個列值。這是一個序列化的硬限製。KB的這篇文章地址。的解決辦法是找到一些方式加載到不同的列值。我閑逛,看看能不能找到一個很好的方式代碼。會如果我找到一些,否則你會需要沃納和編輯的方法傳入的JSON。

D3nnisd
新的貢獻者三世

嗨,謝謝你的回應!

我所做的是首先加載json(與上麵的結構),然後爆炸了一部分價值。

可以立即加載爆炸成dataframe所以我們從來沒有達到這個限製在一列嗎?

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

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

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

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

Baidu
map