【发布时间】:2019-03-25 17:01:24
【问题描述】:
我是 Spark 和 scala 的新手,正在研究一个简单的 wordCount 示例。
因此,我使用 countByValue 如下:
val words = lines.flatMap(x => x.split("\\W+")).map(x => x.toLowerCase())
val wordCount = words.countByValue();
效果很好。
同样的事情可以像这样实现:
val words = lines.flatMap(x => x.split("\\W+")).map(x => x.toLowerCase())
val wordCounts = words.map(x => (x, 1)).reduceByKey((x, y) => x + y)
val sortedWords = wordCounts.map(x => (x._2, x._1)).sortByKey()
这也很好用。
现在,我的问题是何时使用哪些方法? 哪一个比另一个更受欢迎?
【问题讨论】:
-
您是否认为答案符合您对知识的要求?
-
知道是否接受答案吗?
-
在声明中: val wordCounts = words.map(x => (x, 1)).reduceByKey((x, y) => x + y) 有人可以解释为什么 x + y 吗?
标签: scala apache-spark rdd word-count