Kiedy wykonać poniżej polecenia:Domyślny układ partycji w Spark
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]
Mówi, że istnieje 10 partycje i podział odbywa się za pomocą HashPartitioner
. Ale kiedy wykonuję poniższe polecenie:
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
Mówi, że istnieją 4 partycje i partycja nie jest zdefiniowana. Co to jest domyślny schemat partycji w Spark?/W jaki sposób dane są partycjonowane w drugim przypadku?
OK !! Dziękuję za wyjaśnienia. Sprawdziłem, czy dane są krojone za pomocą indeksów w późniejszym przypadku (lub obliczaj początek i koniec, dzieląc go na liczbę partycji) –