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

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

}

]

}

' ' '

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

提前謝謝!

親切的問候,

丹尼斯

1接受解決方案

接受的解決方案

Dan_Z
尊敬的貢獻者

例如:

從pyspark。sql從pyspark.sql進口行。(文件類型*文件導入=[行= " / dbfs / tmp / comm_q_json.json ")] df =火花。createDataFrame(文件(文件:String)) def read_process_json(迭代器):大熊貓作為pd def process_from_path導入(路徑):rawJSON = pd.io.json.read_json(路徑)返回pd.json_normalize (rawJSON(“價值”))在迭代器:pdf DFseries = pdf(“文件”)蘋果(process_from_path) .tolist()收益率pd.concat (DFseries) outSchema = StructType ([StructField (“COL1 StringType(),真的),StructField (“COL2 StringType(),真的),StructField (COL3, StringType(),真的),StructField (“COL4 StringType(),真的),StructField (“COL5 StringType(),真的),StructField (“COL6 StringType(),真的),StructField (“COL8 StringType(),真的),StructField (“COL9 StringType(),真的)))(df顯示。mapInPandas (read_process_json模式= outSchema))

我們依靠JSON爭論熊貓API。我不是100%肯定這將工作,但誰知道呢。你可能需要調整一些配置如果序列化結果太大。

在原帖子查看解決方案

15日回複15

werners1
尊敬的貢獻者三世

如果您使用多行= true,文件將閱讀作為一個整體

(見https://docs.www.eheci.com/data/data-sources/read-json.html)。

所以如果可以的話,試著用單行。

如果這是不可能的,你可以試著把json文件存儲,或使用更大的工人/司機。

D3nnisd
新的貢獻者三世

謝謝你的快速反應!

我試著同一行,但這導致引起的:. io .換行符之前IOException:太多的字節:2147483648

我目前28日與8 gb / 4核心/節點1的司機。我的情況會增加緩衝?

D3nnisd
新的貢獻者三世

我已經編輯了Json,因為它還包含一個字符串的文件。我認為這就是為什麼單模是行不通的。

werners1
尊敬的貢獻者三世

如果字符串太大了,你就會遇到問題。

還請記住,必須包含一個單獨的,每一行包含有效的JSON對象。

(https://spark.apache.org/docs/3.2.0/sql-data-sources-json.html的內容)

首先你可能需要做一些編輯。

在這裏有人還發布了一個可能的解決方案編輯json。

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

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

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

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

Baidu
map