2016-02-10 2 views
0

У меня есть RDD like (a, b, Array (p1, p2, p3), c), я хочу применить flatmap на Array внутри значения, чтобы получить нижний вывод, например , (а, б, p1, с) (а, б, Р2, с) (A, B, P3, с)Scala Flatmap on Array внутри части значения

+1

Итак, где вы застряли? –

+0

С java back ground, я очень новичок в scala, ища фрагмент кода для применения flatmap на массиве, который в части значения. – prakash

ответ

4

Код:

val arr = Array(("a1", "b1", Array("1", "2", "3")),("a1", "b1", Array("1", "2", "3"))) 
val rdd: RDD[(String, String, Array[String])] = sc.parallelize(arr) 
val result = rdd.flatMap { 
    case (first, second, third) => { 
    third.map(x => (first, second, x)) 
}} 

println("Results: " + result.collect.mkString("|")) 

Результаты:

Results: (a1,b1,1)|(a1,b1,2)|(a1,b1,3)|(a1,b1,1)|(a1,b1,2)|(a1,b1,3) 
+0

Спасибо, Bryan, отлично работал – prakash

Смежные вопросы