首页 > 解决方案 > 为什么单元素RDD中有这么多分区

问题描述

以下代码返回 16 个分区。1 个东西的数组怎么可能有 16 个分区?

rdd = sc.parallelize([""])
rdd.getNumPartitions()

标签: apache-sparkpyspark

解决方案


RDD 中创建的分区数量sc.parallelize取决于所使用的调度程序实现。

SchedulerBackendtrait 有这个方法——

def defaultParallelism(): Int

CoarseGrainedSchedulerBackend(由纱线使用)具有此实现 -

    覆盖 def defaultParallelism(): Int = {
        conf.getInt("spark.default.parallelism", math.max(totalCoreCount.get(), 2))
    }

LocalSchedulerBackend 具有以下实现

    覆盖 def defaultParallelism(): Int =
        scheduler.conf.getInt("spark.default.parallelism", totalCores)

这就是为什么您的 RDD 有 16 个分区的原因。


推荐阅读