【问题标题】:In spark what is the difference between setting the conf spark.default.parallelism and calling the method rdd.coalesce()?在 spark 中设置 conf spark.default.parallelism 和调用方法 rdd.coalesce() 有什么区别?
【发布时间】:2021-04-06 03:58:23
【问题描述】:

在 spark 中设置 conf spark.default.parallelism 和调用方法 rdd.coalesce() 有什么区别?

两者的结果相同吗?

【问题讨论】:

    标签: java apache-spark rdd


    【解决方案1】:

    根据docsspark.default.parallelism

    由转换返回的 RDD 中的默认分区数,例如 joinreduceByKeyparallelize(当用户未设置时)。

    默认值为:

    对于像 reduceByKey 和 join 这样的分布式 shuffle 操作, 父 RDD 中的最大分区数。

    对于像这样的操作 在没有父 RDD 的情况下并行化,这取决于集群管理器:

    本地模式:本地机器上的核心数

    Mesos 细粒度 模式:8

    Others:所有执行器节点上的核心总数或2个, 以较大者为准

    rdd.coalesce() 方法允许您减少 RDD 中的分区数,例如通过调用 rdd.coalesce(1) 您会将分区数减少到 1。

    因此,它们通常不会给出相同的结果,但您可以想象spark.default.parallelism 的设置类似于

    rdd.{transformations...}.repartition({value of spark.default.parallelism})
    

    joinreduceByKey 转换之后。

    【讨论】:

      猜你喜欢
      • 2018-01-24
      • 1970-01-01
      • 2014-05-30
      • 2015-01-02
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多