Как преобразовать этот многомерный объект, как указано ниже в Scala? - PullRequest
0 голосов
/ 28 марта 2020

Я хотел бы преобразовать следующую СДР

(4,List((5,List(8, 9, 4, 6))))

в

(4,5,8),(4,5,9),(4,5,4),(4,5,6)

Я пробовал использовать карту / flatMap, но не смог ее достичь. Может ли кто-нибудь помочь мне с этим в scala?

Ответы [ 2 ]

2 голосов
/ 28 марта 2020

Вы можете сделать что-то вроде этого

val rdd = sc.parallelize(List((4,List((5,List(8, 9, 4, 6))))))
val res = rdd.flatMap{
   case (v1, l) =>
      l.flatMap{
         case (v2, l2) => 
             l2.map(v3 => (v1, v2, v3))
      }
}
0 голосов
/ 28 марта 2020

Я не уверен, что вам нужно что-то для этого конкретного случая c, или вам нужно решение, которое будет иметь несколько различных вложенных списков. Если это только для этого конкретного случая c, то это может быть решением

val value: (Int, List[(Int, List[Int])]) = (4, List((5, List(8, 9, 4, 6))))

  val toList = {
    value._2.flatMap(obj => {
      obj._2.map(obj2 => {
        (value._1, obj._1, obj2)
      }
      )
    })
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...