Wie funktioniert Sparks RDD.randomSplit tatsächlich teilen die RDD
Also davon ausgehen, ive bekam ein rdd mit 3000 Zeilen. Die 2000 ersten Zeilen der Klasse 1 und die letzten 1000 Zeilen der class2.
Der RDD ist partitioniert über 100 Partitionen.
Beim Aufruf RDD.randomSplit(0.8,0.2)
Macht die Funktion auch shuffle der rdd? Unsere macht das splitting einfach Probe 20% kontinuierlich der rdd? Oder tut es wählen 20% der Partitionen nach dem Zufallsprinzip?
Idealerweise funktioniert die daraus resultierende Trennung in der gleichen Klasse Verteilung, wie die original-RDD. (dh 2:1)
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für jeden Bereich definiert durch
weights
array gibt es eine separatemapPartitionsWithIndex
transformation bewahrt, die Partitionierung.Jede partition wird abgetastet und mit Hilfe einer
BernoulliCellSamplers
. Für jede Teilung, die es iteriert über die Elemente einer gegebenen partition und wählt Element, wenn der Wert des nächsten randomDouble
ist in einem bestimmten Bereich definiert, indem die normalisierten GEWICHTE. Alle Sampler für eine bestimmte partition verwenden den gleichen RNG-seed. Es bedeutet es: