Как отобразить многомерные массивы в Scala - PullRequest
0 голосов
/ 18 июня 2019

Я немного новичок в scala spark. Я не мог найти ответ по этому поводу. У меня есть такие массивы

   |Id           |endpoints                         |score|          |type|

|106688      |[[clothes:tops], [clothes]]        |[[0.01], [0.283]]     |[S1S2, S1]   |
|107594      |[[clothes,tops], [clothes]]        |[[0.01], [0.19]]      |[S1S2, S1]   |
|108800      |[[clothes:tops], [clothes]]        |[[0.01], [0.052]]     |[S1S2, S1]   |

Мне нужно сопоставить это друг с другом в этом формате.

Map(S1S2 -> Map(clothes:tops -> 0.01)

Каков наилучший подход к отображению этих массивов. В основном мне нужно знать, как эти массивы связаны друг с другом, как показано ниже.

 Map(S1S2 -> Map(clothes:tops -> 0.01), S1 -> Map(clothes -> 0.25))

1 Ответ

0 голосов
/ 21 июня 2019

Я решил проблему самостоятельно.Надеюсь, что ответ будет полезным и для других.В основном то, что я должен был использовать функцию карты.Я поставлю здесь свои строки кода.

   df.map(r =>{
              val Id = r.getAs[String]("Id")
              val endpoints = r.getAs[Seq[String]]("endpoints")
              val score =   r.getAs[Seq[Seq[Double]]]("score")
              val type = r.getAs[Seq[Seq[String]]]("type")
              val zipped = endpoint zip scores
              val merge = zipped.map{
                r =>
                  val endpoint = r._1
                val score = r._2
                 endpoint zip(score)
              }
   val seqmerged = merge.map(r => (r.toMap))
          val endpointmerged = endpointValue zip seqmerged
          (atgId, endpointmerge.toString())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...