首先吐槽一下csdn,目前不支持scala语言输入!!希望后续维护更新!
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
/**
* Date:2019/4/24
* Author:Lynn.cn.Li
* Desc:学习scala语言开发实现spark版:词计数
*/
object WordCount {
def main(args: Array[String]): Unit = {
//创建SparkConf对象,这只appName和master地址
val conf: SparkConf = new SparkConf().setAppName("LocalWordCount").setMaster("local[2]")
// 2.创建SparkContext对象
val context: SparkContext = new SparkContext(conf)
// 3.读取数据文件
val dataRDD: RDD[String] = context.textFile("g://input/1.txt")
//4.切分文件中的每一行,返回文件所有单词
val wordRDD: RDD[String] = dataRDD.flatMap(_.split(" "))
// 5.每个单词计数为1:(单词,1)
val wordAndOne: RDD[(String, Int)] = wordRDD.map((_,1))
// 6.相同单词出现的次数累加
val reslutRDD: RDD[(String, Int)] = wordAndOne.reduceByKey(_+_)
//按照单词出现的次数降序排列
val sortResultRDD: RDD[(String, Int)] = reslutRDD.sortBy(_._2)
// 7.收集结果数据
val finalData: Array[(String, Int)] = sortResultRDD.collect()
// 8.打印结果数据
finalData.foreach(x=>println(x))
//一步链式编程简化
val tuples: Array[(String, Int)] = context.textFile("g://input/1.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2).collect()
for(word <- tuples){
println(word)
}
// 9.关闭SparkContext
context.stop()
}
}