目前集群配置:
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執行人:
工作界麵:
我們希望你能幫助我們,理解和解決這個問題。
嗨@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。啟用”,真的)
嗨@Tom葡萄酒,我看到錯誤消息是指向Python UDF (PythonUDFRunner.scala)。執行Python UDF的問題是發生在司機。這是司機施壓。最好的方法是能夠實現UDF的功能而無需UDF。然而,如果不可行,我們有兩個選擇: