Reparticionar RDDs en Scala

Tuberias de particiones RDDs – spipe()scala_logo

Toma los datos RDD de cada una de las particiones y los envía a través de stdin a una linea de comandos
val rdd = sc.parallelize(1 to 10, 2)
rdd.pipe("head -n 2").collect()
res: Array[String] = Array(1, 2, 6, 7)

 

Reducir particiones en RDDs – coalesce()

Nos devuelve un RDD con un número de particiones menor del que partíamos, el cual podemos especificar.
val rdd1 = sc.parallelize(1 to 10, 5)
rdd1.partitions.length
val rdd2 = rdd1.coalesce(2, false)
rdd2.partitions.length
res1: Int = 5
res2: Int = 2

 

Reparticionar RDDs – repartition()

Reorganiza aleatoriamente los datos en el RDD para crear más o menos particiones

val rdd1 = sc.parallelize(1 to 10, 5)
rdd1.partitions.size
val rdd2 = rdd1.repartition(3)
rdd2.partitions.size
res1: Int = 5
res2: Int = 2