Почему Spark RDD хранит большее количество разделов для небольших данных - PullRequest
0 голосов
/ 11 апреля 2020

Я создаю RDD, передав коллекцию методу sparkContext parallelize. У меня вопрос, почему он дает мне 8 разделов, так как у меня только 3 записи. Я получаю несколько пустых разделов

 scala> val rdd = sc.parallelize(List("surender","raja","kumar"))
rdd: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:40

scala> rdd.partitions.length
res0: Int = 8

scala> rdd.partitions
res1: Array[org.apache.spark.Partition] = Array(org.apache.spark.rdd.ParallelCollectionPartition@691, 
org.apache.spark.rdd.ParallelCollectionPartition@692, 
org.apache.spark.rdd.ParallelCollectionPartition@693, 
org.apache.spark.rdd.ParallelCollectionPartition@694, 
org.apache.spark.rdd.ParallelCollectionPartition@695, 
org.apache.spark.rdd.ParallelCollectionPartition@696, 
org.apache.spark.rdd.ParallelCollectionPartition@697, 
org.apache.spark.rdd.ParallelCollectionPartition@698)

scala> rdd.getNumPartitions
res2: Int = 8

1 Ответ

1 голос
/ 11 апреля 2020

Если вы не укажете количество разделов, будет создан определенный в spark.default.parallelism, значение которого вы можете проверить, запустив sc.defaultParallelism.

Это значение зависит от того, где вы работаете, и от аппаратного обеспечения:

Согласно документации (ищите spark.default.parallelism)

зависит от менеджера кластера:
Локальный режим: количество ядер на локальном компьютере
Mesos мелкозернистый режим: 8
Другие : общее количество ядер на всех узлах-исполнителях или 2, в зависимости от того, что больше

Вы можете указать количество разделов со вторым параметром в методе parallelize

Для экземпляр:

val rdd = sc.parallelize(List("surender","raja","kumar"), 5)

scala> rdd.partitions.length
res1: Int = 5

scala> sc.defaultParallelism
res2: Int = 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...