Когда я выполняю команду ниже:
scala> val rdd = sc.parallelize(List((1,2),(3,4),(3,6)),4).partitionBy(new HashPartitioner(10)).persist()
rdd: org.apache.spark.rdd.RDD[(Int, Int)] = ShuffledRDD[10] at partitionBy at <console>:22
scala> rdd.partitions.size
res9: Int = 10
scala> rdd.partitioner.isDefined
res10: Boolean = true
scala> rdd.partitioner.get
res11: org.apache.spark.Partitioner = [email protected]
В нем указано, что существует 10 разделов, а разбиение выполняется с помощью HashPartitioner
. Но когда я выполняю команду ниже:
scala> val rdd = sc.parallelize(List((1,2),(3,4),(3,6)),4)
...
scala> rdd.partitions.size
res6: Int = 4
scala> rdd.partitioner.isDefined
res8: Boolean = false
В нем указано, что существует 4 раздела и разделитель не определен. Итак, что такое схема разбиения по умолчанию в Spark?/Как данные разделяются во втором случае?