Как использовать flatMap для выравнивания одного компонента кортежа - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть кортеж как .. (a, list(b,c,d)).Я хочу вывод, как

(a,b)
(a,c)
(a,d)

Я пытаюсь использовать flatMap для этого, но не получаю никакого успеха.Даже карта в этом случае не помогает.

Входные данные:

Chap01:Spark is an emerging technology
Chap01:You can easily learn Spark
Chap02:Hadoop is a Bigdata technology
Chap02:You can easily learn Spark and Hadoop

Код:

val rawData = sc.textFile("C:\\wc_input.txt")

val chapters = rawData.map(line => (line.split(":")(0), line.split(":")(1)))

val chapWords = chapters.flatMap(a => (a._1, a._2.split(" ")))

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Вы можете отобразить второй элемент кортежа:

val t = ('a', List('b','c','d'))
val res = t._2.map((t._1, _))

Отрезанный код разрешает до:

res: List[(Char, Char)] = List((a,b), (a,c), (a,d))
0 голосов
/ 11 апреля 2019

Этот сценарий может быть легко обработан с помощью flatMapValues ​​ методов в RDD.Работает только для значений пары СДР, сохраняя ключ одинаковым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...