Apache Spark 互动版

组合的威力

老子

《道德经》说的是简单的东西组合起来也不得了。与之类似(当然还达不到那个高度), RDD的诸多动作和变换,经过组合也可以实现复杂的计算,满足相当多现实的数据计算需求。

假设我们需要找出文件中单词数量最多的行,做个map/reduce就可以了:

scala> textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
res4: Long = 15

上面语句首先使用map变换,将每一行(成员)映射为一个整数值(单词数量),这获得了一个新的RDD。然后在 这个新的RDD上执行reduce动作,找到(返回)了单词数量最多的行。

RDD的变换有点像PS的滤镜,有时要用好几个滤镜,才能把脸修好。

请使用你的textFile变量,计算所有单词的数量。