【问题标题】:increase task size spark [duplicate]增加任务大小火花[重复]
【发布时间】:2017-05-28 10:16:31
【问题描述】:

我在 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);`

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    我有类似的错误:

    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)

    【讨论】:

    • 从这个答案中学到了很多
    【解决方案2】:

    这很可能是因为您的任何任务中的变量要求较大。 对此question 的公认答案应该对您有所帮助。

    【讨论】:

    • 是的,我读过这篇文章,但我不明白如何使用它。可以举个例子吗
    • 当我尝试时,我有一个错误,比如笛卡尔不是广播成员
    • 为此,要么创建一个新问题(最好),要么发布您的代码并更新您的问题。也请接受答案;)
    猜你喜欢
    • 1970-01-01
    • 2018-09-02
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2016-10-12
    • 2020-04-02
    • 2016-07-31
    相关资源
    最近更新 更多