2015-12-16 6 views
0

У меня есть RDD с каждой записью формата (Long, Array [Double]). Например:Spark: Преобразование RDD [(Long, Array [Double])] в RDD [(Long, Long, Double)]

val A = sc.parallelize([(0, [5.0, 8.3]), (1, [4.2, 1.2])]) 

Я хочу, чтобы преобразовать к виду:

[(0, 0, 5.0), (0, 1, 8.3), (1, 0, 4.2), (1, 1, 1.2)], 

, где второй элемент кортежа является индексом значения из массива.

ответ

1

попробовать это:

A.flatMap { case (first, dbls) => dbls.zipWithIndex.map { case (dbl, ix) => (first, ix.toLong, dbl) } } 
1

Вы можете сделать это следующим образом:

A.flatMap {case (v, arr) => arr.zipWithIndex.map {case (a, i) => (v, i, a)}} 
Смежные вопросы