增加任务大小 spark

use*_*007 4 scala apache-spark

在 spark-shell 中执行代码时遇到问题。

[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]
Run Code Online (Sandbox Code Playgroud)

在此警告之后,执行被阻止。

谁能解决?

我试过这个,但它不能解决问题。

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

Sru*_*tur 7

我有类似的错误:

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

我的输入数据大小约为 150MB,有 4 个分区(即,每个分区的大小约为 30MB)。这解释34564 KB了上述错误消息中提到的大小。

原因: 任务是 spark 中作用于输入数据分区的最小工作单元。因此,如果 spark 告诉任务的大小超过推荐大小,则意味着它处理的分区有太多数据。

对我有用的解决方案:

reducing task size => reduce the data its handling => increase
numPartitions to break down data into smaller chunks
Run Code Online (Sandbox Code Playgroud)
  • 因此,我尝试增加分区数量并消除错误。
  • 可以通过以下方式检查数据帧中的分区数 df.rdd.getNumPartitions
  • 增加分区: df.repartition(100)


cod*_*ode 5

这很可能是因为任何任务中的变量都需要大尺寸。这个问题的公认答案应该对您有帮助。