【发布时间】:2019-04-11 14:41:21
【问题描述】:
我有一个像.. (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(" ")))
【问题讨论】:
-
val chapWords = chapters.flatMap { case(a, b) => b.split(" ").map(word => a -> word) }。问题是 flatMap 需要一个 collection 但您传递给它一个元组,因此您需要映射该集合以创建一个元组集合。 -
@LuisMiguelMejíaSuárez:感谢您的快速解决。它奏效了。
标签: scala apache-spark