RDD没有Partioner&分区大小

时间:2015-07-14 05:58:14

标签: apache-spark

我很高兴知道与没有Partioner& amp;的RDD之间的关系。它的分区大小。比如以map()转换为例。它返回一个没有分区器的RDD(如预期的那样)。

scala> val input = sc.parallelize(List(1, 2, 2, 3))
input: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:21

scala>  val sum = input.map(x => x + 1)
sum: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[1] at map at <console>:23

scala> sum.partitioner;
res0: Option[org.apache.spark.Partitioner] = None

当我尝试查找分区大小时,我看到分区大小为8

scala> sum.partitions.size
res1: Int = 8

考虑到RDD sum没有分区程序,我期望分区大小为1(即无分区)。对于RDD(> 1),如何在没有分区的情况下将分区大小设置为sum

1 个答案:

答案 0 :(得分:0)

如果patitioner为None,则意味着分区不是基于数据的特征,而是分布是随机的并且保证在节点之间是统一的。所以patitions.size是&gt; 1

参考:https://techmagie.wordpress.com/2015/12/19/understanding-spark-partitioning/

相关问题