Scala - Как объединить значения List и Option после объединения двух RDD? - PullRequest
0 голосов
/ 12 октября 2018

У меня есть два RDD, к которым я хочу присоединиться - salesfromSource1: RDD[(String, List[Sale])] и filteredSales: RDD[(String, Sale)]

Поскольку я хочу выполнить левое соединение, я попробовал следующее:

val joinedSales: RDD[(String, (List[Sale], Option[Sale]))] = salesfromSource1.leftOuterJoin(filteredSales)

Но как мне объединить значения, чтобы в результате я получил RDD[(String, List[InvocaCall])]?

Я ожидал достичь этого с помощью .mapValues(_._1 ::: _._2)

Однако я получаю компилятор несоответствия типов, выделив (expected (List[Sale], Option[Sale]) => NotinferedU, actual: (Any, Any) => Any)

1 Ответ

0 голосов
/ 12 октября 2018

Например, вот так:

.mapValues {
   case (x, None) => x
   case (x, Some(y)) => x :: y
}

или

.mapValues { x =>
  x._2.map(y => x._1 :: y).getOrElse(x._1)
}
...