我有一个类似.. (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(" ")))
答案 0 :(得分:1)
您可以映射到元组的第二个元素:
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))
答案 1 :(得分:0)
这种情况可以通过RDD中的 flatMapValues 方法轻松处理。它仅对保持键相同的RDD对值起作用。