2016-03-29 2 views
-4

Учитывая эту коллекцию:Денормализовать Карта Тип

("user1",Map("Gobelin" -> "2","Archers" ->"3")) 
("user2",Map("Giant" -> "1")) 

Я хочу, чтобы выходной сигнал, который выглядит, как этот

("user1","Gobelin","2") 
("user1","Archers","3") 
("user2","Giant","1") 

Как я могу добиться этого с искрой?

ответ

1

Скорее всего, вы ищете flatMapValues:

val rdd = sc.parallelize(
    ("user1",Map("Gobelin" -> "2","Archers" ->"3")) :: 
    ("user2",Map("Giant" -> "1")) :: Nil) 

rdd.flatMapValues(identity[Map[String, String]]) 

или explode:

rdd.toDF.select($"_1", explode($"_2")).as[(String, String, String)].rdd 
Смежные вопросы