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

不能寫/覆蓋三角洲表錯誤:oxxxx.saveAsTable。(驅動程序錯誤:OutOfMemory)

tw1
新的貢獻者三世

目前集群配置:

Standard_DS3_v2 (14 gb, 4核)2 - 6的工人

Standard_DS3_v2 (14 gb, 4核)驅動程序

運行時:10.4 x-scala2.12

我們想要覆蓋一個臨時三角洲表與新記錄。記錄將由另一個三角洲表加載和轉換在一個筆記本上。這個記錄有一個列與一個大的字符串值。

我們認為這個錯誤occours因為司機必須處理很多內存。所以我們與集群(例如spark.executor測試不同的配置。記憶,spark.driver。記憶,…)

我們還測試了重新分區和maxRowsInMemory。有時候我們的工作運行,但在大部分時間我們會得到這樣的錯誤。

如。

Notebook-Error:

o1161。saveAsTable o1158。saveAsTable,……

193年

194打印(f”覆蓋三角洲表中記錄{full_table_name}。”)

- - > 195年df.write.format \(“δ”)

196 .partitionBy(“年”,“TypeOfTapChanger”) \

197年.mode \(“覆蓋”)

/磚/火花/ python / pyspark / sql /readwriter.py在saveAsTable(自我、名稱、格式、模式、partitionBy、* *選項)

804如果格式不是沒有:

805 self.format(格式)

- - > 806 self._jwrite.saveAsTable(名稱)

807年

808 def json(自我、路徑模式= None,壓縮= None, dateFormat = None, timestampFormat =沒有

/磚/火花/ python / lib / py4j-0.10.9.1-src.zip / py4j / java_gateway。py __call__(自我,* args)

1302年

1303年的答案= self.gateway_client.send_command(命令)

- > 1304 return_value = get_return_value (

1305年的答案,自我。gateway_client self.target_id,self.name)

1306年

/磚/火花/ python / pyspark / sql /utils.py在德科(*,* *千瓦)

115年def德科(*,* *千瓦):

116年試題:

- - > 117返回f(*, * *千瓦)

118年py4j.protocol除外。Py4JJavaError e:

119 = convert_exception轉換(e.java_exception)

/磚/火花/ python / lib / py4j-0.10.9.1-src.zip / py4j /protocol.py在get_return_value(答案,gateway_client target_id,名稱)

324值= OUTPUT_CONVERTER[型](回答[2],gateway_client)

325如果[1]= = REFERENCE_TYPE回答:

- - > 326提高Py4JJavaError (

327”時發生一個錯誤調用{0}{1}{2}。\ n”。

328格式(target_id”。“名字),值)

Py4JJavaError:調用o1161.saveAsTable時發生一個錯誤。

:org.apache.spark。SparkException:工作中止。

駕駛員失誤:

23/02/15 10:58:38信息執行人:完成任務階段139.0 2.0 (TID 926)。2578字節的結果發送給司機

23/02/15 10:58:38信息CoarseGrainedExecutorBackend: 955年被分配的任務

開始讀廣播23/02/15 10:58:38信息TorrentBroadcast變量144 1金幣(估計總大小4.0 MiB)

23/02/15 10:58:39信息MemoryStore:塊broadcast_144_piece0作為字節存儲在內存中(估計大小42.8簡約、自由3.0直布羅陀海峽)

閱讀廣播23/02/15 10:58:39信息TorrentBroadcast變量144女士花了1077

23/02/15 10:58:39信息MemoryStore: broadcast_144作為值存儲在內存塊(估計大小149.3簡約、自由3.0直布羅陀海峽)

23/02/15 10:58:39信息執行人:運行的任務7.0階段140.0 (TID 955)

23/02/15 10:58:39信息CodeGenerator:代碼生成200.255017 ms

開始讀廣播23/02/15 10:58:40信息TorrentBroadcast變量141 1金幣(估計總大小4.0 MiB)

23/02/15 10:58:41信息CodeGenerator:代碼生成1729.166417 ms

23/02/15 10:58:46錯誤跑龍套:異常的線程stdout作家/磚/ python / bin / python

. lang。OutOfMemoryError: Java堆空間

org.apache.spark.sql.execution.python.PythonUDFRunner立刻2.美元美元讀(PythonUDFRunner.scala: 78)

org.apache.spark.sql.execution.python.PythonUDFRunner立刻2.美元美元讀(PythonUDFRunner.scala: 68)

在UI執行人:

圖像工作界麵:

圖像

我們希望你能幫助我們,理解和解決這個問題。

1接受解決方案

接受的解決方案

Lakshay
尊敬的貢獻者三世
尊敬的貢獻者三世

嗨@Tom葡萄酒,你可以檢查這個熊貓udf的鏈接://www.eheci.com/blog/2020/05/20/new-pandas-udfs-and-python-type-hints-in-the-upcoming-rel..。

如果你不能將python udf轉換成熊貓udf,您還可以設置配置:spark.conf.set (“spark.databricks.execution.pythonUDF.arrow。啟用”,真的)

在原帖子查看解決方案

9回複9

ajaypanday6781
尊敬的貢獻者二世

嗨@Tom葡萄酒,

你的數據大小,你想寫什麼?

tw1
新的貢獻者三世

嗨,我們使用目前250個文件在一個筆記本,大約8 mb /文件。(但我們通常想要運行500.000文件)

Lakshay
尊敬的貢獻者三世
尊敬的貢獻者三世

嗨@Tom葡萄酒,我看到錯誤消息是指向Python UDF (PythonUDFRunner.scala)。執行Python UDF的問題是發生在司機。這是司機施壓。最好的方法是能夠實現UDF的功能而無需UDF。然而,如果不可行,我們有兩個選擇:

  1. 切換到熊貓UDF或配置優化通過設置spark.conf.set (“spark.databricks.execution.pythonUDF.arrow箭。啟用”,真的)
  2. 使用更大的實例的司機

tw1
新的貢獻者三世

謝謝你的回答。我將測試它,給你一個反饋。

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

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

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

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

Baidu
map