def main(args: Array[String]): Unit = {
//创建一个配置信息对象
//设置应用程序名称
val config:SparkConf = new SparkConf().setAppName("scala_worldcount")
//设置运行模式
/*
* local:使用本地一个线程模拟集群执行任务
* local(num) 使用num个线程去模拟一个集群去执行任务
* local[*] 使用所有空闲的线程去模拟集群任务
* */
.setMaster("local[*]")
//spark 上下文对象,执行spark程序的入口
val sc:SparkContext = new SparkContext(config)
//读取数据源
//通过参数设置源文件路径,hdfs文件,本地文件
//RDD集合里的每一个元素是文件里的一行
//参数是main中第一个参数
val lines:RDD[String] = sc.textFile(args(0))
//单词的rdd集合
val words:RDD[String] = lines.flatMap(_.split(" "))
//(单词,1)的rdd集合
val tupleEorlds:RDD[(String,Int)] = words.map((_,1))
//现根据word进行分组,对每组的value集合元素进行reduce聚合
val res:RDD[(String,Int)] = tupleEorlds.reduceByKey(_+_)
//根据每一个单词出现的次数进行排序
val sorted:RDD[(String,Int)] = res.sortBy(_._2,false)
//结果打印,吧结果从executor汇聚到driver端
println(sorted.collect().toBuffer)
//结果保存到文件系统中
//sorted.saveAsTextFile(args(1))
//资源释放
sc.stop()
}