sc.textFile("/data/wordcount.txt").flatMap(_.split(" ")).map(word=>(word,1)).reduceByKey(_+_).sortBy(_._1,false).collect().foreach(println)
这个file读的是hdfs文件,读文件的区别
sc.textFile("/data/wordcount.txt") //读取这个变量地址指定的文件
.flatMap(_.split(" ")) //把文件中每一行按空格分割并转成多行
.map((_, 1)) //把上面转成多行中的每一项转换成一组一组的数据,每组数据为自身加1的组合,等价于(_,1)、word=>(word,1)
.reduceByKey(_+_) //把每组数据的value值进行累加,也就是把每组数据的所有1进行累加,求出每组key的总数。等价于(_+_)
.sortBy(_._2,true) //按上一步每组的累加值进行排序,等价于(_,_2)
.collect() //收集一个弹性分布式数据集RDD的所有元素到一个数组中
.foreach(println)
在scala中如果函数中只有一个变量那可以不写,或者使用匿名变量
代码里的(, 1) 这个就是逗号前面有个匿名变量,
_.2 这个 就是代表元组的第2个值 可以写成这样的形式f => {f._2} 那这个f和_就是一个意思了