RDD
s sono raccolte distribuite che si materializzano solo sulle azioni. Non è possibile Tronca tua RDD
ad una dimensione fissa, e ancora ottenere un RDD
posteriore (da qui RDD.take(n)
restituisce un Array[T]
, proprio come collect
)
che si desidera ottenere dimensioni simili RDD
s, indipendentemente dalle dimensioni di input , è possibile troncare gli elementi in ciascuna delle partizioni, in questo modo è possibile controllare meglio il numero assoluto di elementi risultanti in RDD
. La dimensione del RDD
risultante dipenderà dal parallelismo della scintilla.
Un esempio dal spark-shell
:
import org.apache.spark.rdd.RDD
val numberOfPartitions = 1000
val millionRdd: RDD[Int] = sc.parallelize(1 to 1000000, numberOfPartitions)
val millionRddTruncated: RDD[Int] = rdd.mapPartitions(_.take(10))
val billionRddTruncated: RDD[Int] = sc.parallelize(1 to 1000000000, numberOfPartitions).mapPartitions(_.take(10))
millionRdd.count // 1000000
millionRddTruncated.count // 10000 = 10 item * 1000 partitions
billionRddTruncated.count // 10000 = 10 item * 1000 partitions
è la tua domanda ancora aperta? Se hai una risposta accettabile, non dimenticare di contrassegnarla come tale. – maasg