当我在 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]
在此警告之后,执行被阻止。
我能为谁解决?
我尝试过这个,但它并不能解决问题。
val conf = new SparkConf()
.setAppName("MyApp")
.setMaster("local[*]")
.set("spark.driver.maxResultSize", "3g")
.set("spark.executor.memory" ,"3g");
val sc = new SparkContext(conf);`
我有类似的错误:
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
上述错误消息中提到的大小。
Reason:任务是 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)