2017-10-16 132 views
0

美好的一天。任務的序列化結果的總大小大於spark.driver.maxResultSize

我正在運行解析某些日誌文件的開發代碼。如果我試圖解析較少的文件,我的代碼將運行平穩。但是當我增加需要解析的日誌文件的數量時,它會返回不同的錯誤,如too many open filesTotal size of serialized results of tasks is bigger than spark.driver.maxResultSize

我試圖增加spark.driver.maxResultSize,但錯誤仍然存​​在。

你能告訴我如何解決這個問題嗎?

謝謝。

Sample Error

+0

在我的情況,我增加maxResultSize超過1 GB比需求和問題解決。你的任務大小是5 GB。你可以嘗試給6 gb一次嗎? –

+0

請顯示代碼... –

回答

0

Total size of serialized results of tasks is bigger than spark.driver.maxResultSize意味着當執行試圖其結果發送到驅動程序,它超過spark.driver.maxResultSize。可能的解決方案如上所述,由@mayank agrawal繼續增加,直到您得到它的工作(如果執行者嘗試發送太多數據,則不是推薦的解決方案)。

我會建議看看你的代碼,看看數據是否傾斜使得執行程序之一執行大部分導致大量數據輸入/輸出的工作。如果數據偏斜,你可以嘗試repartitioning它。

對於打開文件太多的問題,可能的原因是Spark可能在洗牌之前創建了一些中間文件。如果在執行程序中使用太多的內核/高並行性或唯一鍵(在您的情況下可能的原因 - 大量輸入文件),可能會發生這種情況。尋找到一個解決方案是通過這個標誌合併的中間文件數量龐大:--conf spark.shuffle.consolidateFiles=true(當你做​​)

一件事是檢查這個線程(如果類似於你的使用情況的東西):https://issues.apache.org/jira/browse/SPARK-12837

相關問題