spark_wordcount

spark是基于scala写的,虽然spark有java API,或者python API,但是scala算是正统吧。

而且scala的语法书写起来十分的爽,不想java那样笨重,python不太了解,不给予评价。

接下来看下spark版的wordcount,相对与hadoop的mapreduce要简单许多。

/**
* Spark简单入门 worldCount
*/
object SparkWC {
def main(args: Array[String]): Unit = {
// 创建spark的配置对象
// setAppName()设置程序名字
// setMaster() 设置为本地运行
// local用一个线程模拟集群
// local[2]用两个线程模拟集群
// local[*]用所有的空闲线程模拟集群,,spark://spark101:7077
val sparkConf = new SparkConf().setAppName("SparkWC").setMaster("local")
// 根据conf创建SparkContext上下文,也就是程序执行入口
val sc = new SparkContext(sparkConf)
// 读文件
// val files: RDD[String] = sc.textFile("D:\\Demo\\hadoop\\input\\word.txt")
val files: RDD[String] = sc.textFile("D:\\Demo\\hadoop\\input\\word.txt")
// 进行处理数据,进行单词统计,首先我们需要调用 flatMap算子,进行切分压平
val lines: RDD[String] = files.flatMap(_.split(" "))
// 调用map算子,进行单词的统计
val worlds: RDD[(String, Int)] = lines.map((_,1))
// 调用reduceByKey,按key对value聚合
val re: RDD[(String, Int)] = worlds.reduceByKey(_ + _)
// 将数据进行降序排序
val sortWC: RDD[(String, Int)] = re.sortBy(_._2,false)
// 打印数据
println(sortWC.collect().toBuffer)
// 数据存储到hdfs上
sortWC.saveAsTextFile("D:\\Demo\\hadoop\\ouput\\out26") }
}

从代码中,可以看到spark的scala API的强大,希望对大家有用

上一篇:初步认识CNN


下一篇:NIM 博弈 牛客小白月赛2 E-是是非非