2017-01-13 251 views
1

當我在spark-shell中執行我的代碼時遇到問題。增加任務大小spark

[Stage 1:>    (0 + 0)/16] 
17/01/13 06:09:24 WARN TaskSetManager: Stage 1 contains a task of very large size (1057 KB). The maximum recommended task size is 100 KB. 
[Stage 1:>    (0 + 4)/16] 

在此警告之後執行被阻止。

我可以解決誰?

我試過這個,但它不能解決問題。

val conf = new SparkConf() 
    .setAppName("MyApp") 
    .setMaster("local[*]") 
    .set("spark.driver.maxResultSize", "3g") 
    .set("spark.executor.memory" ,"3g"); 
val sc = new SparkContext(conf);` 

回答

2

這很可能是因爲任何任務中變量的大尺寸要求。 這個question的接受答案應該可以幫到你。

+0

呀我讀出了這個帖子,但我不知道如何使用它。你能給我一個例子plz – user7375007

+0

當我嘗試我有一個錯誤,像笛卡爾不是廣播的成員 – user7375007

+0

爲此,要麼創建一個新的問題(最好)或發佈您的代碼並更新您的問題。也請接受答案;) – code

0

我有類似的錯誤:

scheduler.TaskSetManager: Stage 2 contains a task of very large size 
(34564 KB). The maximum recommended task size is 100 KB 

我的輸入數據是大小150MB〜4個分區(即,每一分區是大小〜30MB)。這解釋了上述錯誤消息中提到的34564 KB大小。

原因: 任務是spark中的最小工作單元,它作用於輸入數據的分區。因此,如果spark指出任務的大小超過了建議的大小,則意味着該分區的處理有太多數據。爲我工作

解決方案:

reducing task size => reduce the data its handling => increase 
numPartitions to break down data into smaller chunks 
  • 所以,我嘗試分區的次數增多,擺脫了錯誤的。
  • 人們可以通過df.rdd.getNumPartitions
  • 檢查數據幀分區的數量要增加分區:df.repartition(100)