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

不能寫/覆蓋三角洲表錯誤: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執行人:

圖像工作界麵:

圖像

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

9回複9

匿名
不適用

嗨@Tom葡萄酒

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

我們很想聽到你的聲音。

謝謝!

tw1
新的貢獻者三世

你好,

1。我們改變了我們大字符串列列數組

2。我們使用一個更大的驅動程序的實例

所以我們在筆記本可以處理500個文件轉換。

這個運行時間最多,但偶爾發生同樣的錯誤。

我能不能改變我們pandas_udf UDF。我不是很理解它如何改變panas_udf。

也許你可以幫助我,我將如改變這個udf pandas_udf:

(這裏我們解碼二進製內容字符串內容)

def decode_content(自我,input_df: DataFrame) - > DataFrame:

打印(“解碼二進製內容字符串”)

# udf

def decode_content (s):

gzip = base64.b64decode (s)

gzip1 = gzip (4:)

返回減壓(gzip1) .decode ()

#創建udf

decode_content_udf = udf(λz: decode_content (z), StringType ())

#使用udf

結果= input_df。withColumn(“解碼”,decode_content_udf (input_df.content))

結果= result.select(坳(“解碼”))

返回結果

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。啟用”,真的)

tw1
新的貢獻者三世

你好,

謝謝你的幫助!

我們測試的配置設置和運行沒有任何錯誤。

你能給我們更多的信息,我們可以找到一些文檔這樣的設置。我們搜索時間來解決我們的問題。所以我們聯係了這個社區。目前很難找到正確的documentaions完善我們的代碼。

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

嗨@Tom葡萄酒,很高興知道建議幫助!

我沒有完全文檔提供了這個配置。但是我前麵提到的文檔討論Apache箭頭。所以,我們通常建議使用熊貓udf已經啟用了箭頭。但是如果你不能使用熊貓udf,我們可以使用相同的配置使。

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

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

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

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

Baidu
map