Wywołuję funkcję w scala, która daje RDD[(Long,Long,Double)]
jako wyjście.Scal wiele RDD generowanych w pętli
def helperfunction(): RDD[(Long, Long, Double)]
nazywam tę funkcję w pętli w innej części kodu i chcę, aby scalić wszystkie wygenerowane RDD. Pętla wywołując funkcję wygląda tak
for (i <- 1 to n){
val tOp = helperfunction()
// merge the generated tOp
}
Co chcę zrobić coś podobnego do tego, co StringBuilder zrobiłby dla ciebie w Javie, kiedy chciał się połączyć za sznurki. Mam spojrzał na technikach łączących RDD, które w większości wskazują na użyciu funkcji związkowej jak ten
RDD1.union(RDD2)
Wymaga to jednak oba RDD mają zostać wygenerowane przed podjęciem unii. Chciałem zainicjować var RDD1, aby zebrać wyniki poza pętlą for, ale nie jestem pewien jak zainicjować puste RDD typu [(Long,Long,Double)]
. Również zaczynam od iskry, więc nie jestem nawet pewien, czy jest to najbardziej elegancka metoda rozwiązania tego problemu.
IIRC nie można związać RDD z pustymRDD, dopóki Spark 2.0. – MrChristine
jak to zrobić, jeśli musisz przekazać indeks pętli do funkcji pomocnika? – G3M
Jeśli chcesz przekazać indeks pętli do funkcji pomocnika, możesz zrobić coś takiego: 'val rdd = (1 do n) .zipWithIndex.map {case (x, index) => helperFunction (i)} .reduce (_ union _) ' Oczywiście w tym przypadku nie jest to konieczne, ponieważ mamy kolekcję zwiększającą liczbę całkowitą, ale można zastąpić' (1 do n) 'z dowolnej kolekcji –