Scala 增加任务大小

Scala 增加任务大小,scala,apache-spark,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] 发出此警告后,

我在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
大小

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

对我有效的解决方案:

reducing task size => reduce the data its handling => increase
numPartitions to break down data into smaller chunks
  • 因此,我尝试增加分区的数量,并消除了错误
  • 可以通过
    df.rdd.getNumPartitions
  • 要增加分区:
    df.重新分区(100)

是的,我读过这篇文章,但我不知道如何使用它。你能给我一个例子吗?当我尝试时,我有一个错误,比如cartesian不是广播公司的成员。为此,要么创建一个新问题(更好),要么发布你的代码并更新你的问题。也请接受答案;)从这个答案中学到了很多