【问题标题】:RDD partitioning logicRDD 分区逻辑
【发布时间】:2016-05-22 12:45:31
【问题描述】:

我正在尝试了解 RDD 分区逻辑。 RDD 是跨节点分区的,但想了解这个分区逻辑是如何工作的。

我有分配给它的 4 个内核的 VM。我创建了两个 RDD ,一个来自 HDFS ,一个来自并行化操作。

第一次创建了两个分区,但在第二次操作中创建了 4 个分区。

我检查了没有分配给文件的块 - 它是 1 个块,因为文件非常小,但是当我在该文件上创建 RDD 时,它显示了两个分区。为什么是这样 ?我在某处读到,分区还取决于核心的数量,在我的情况下 4 仍然不能满足该输出。

有人可以帮助理解这一点吗?

【问题讨论】:

标签: apache-spark rdd


【解决方案1】:

textFile的完整签名是:

textFile(path: String, minPartitions: Int = defaultMinPartitions): RDD[String]

使用第二个参数minPartitions,您可以设置要获取的最小分区数量。可以看到,默认设置为defaultMinPartitions,又被定义为:

def defaultMinPartitions: Int = math.min(defaultParallelism, 2)

defaultParalellism 的值是使用spark.default.parallelism 设置配置的,默认情况下取决于您在本地模式下运行 Spark 时的内核数。在你的情况下这是 4,所以你得到 min(4, 2),这就是你得到 2 个分区的原因。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-12-30
  • 2019-07-29
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 2013-10-10
相关资源
最近更新 更多