赞
踩
学习Spark的第一天,因为Scala是Spark编程常用的语言之一,所以使用Scala编写了一个词频统计,欢迎各位大神的指正与建议,一起学习一起成长。代码及注释如下:
- object WordCount {
- import org.apache.spark.rdd.RDD
- import org.apache.spark.{SparkConf, SparkContext}
-
- def main(args: Array[String]): Unit = {
- //1.创建SparkConf对象,设置appName和Master地址
- val sparkconf = new SparkConf().setAppName("wordCount").setMaster("local[2]")
- //2.创建SparkContext对象,它是所有任务计算的源头,它会创建DAGScheduler和TaskScheduler
- val sparkContext = new SparkContext(sparkconf)
- //设置日志级别
- //sparkContext.setLogLevel("WARN")
- //3.读取数据文件,RDD可以简单的理解为是一个集合,集合中存放的元素是String类型
- val data : RDD[String] = sparkContext.textFile("D:\\word\\words.txt")
- //4.切分每一行,获取所有的单词
- val words :RDD[String] = data.flatMap(_.split(" "))
- //5.每个单词记为1,转换为(单词,1)
- val wordAndOne :RDD[(String, Int)] = words.map(x =>(x,1))
- //6.相同单词汇总,前一个下划线表示累加数据,后一个下划线表示新数据
- /*
- hello 1
- world 1
- hello 1 --> hello 2 x 是 2,y是 1
- hello 1 --> hello 3
- */
- //val result: RDD[(String, Int)] = wordAndOne.reduceByKey((x,y)=>x+y)
- val result: RDD[(String, Int)] = wordAndOne.reduceByKey(_+_)
- //7.收集打印结果数据:从分布式内存中收集计算结果,是一个数组
- val finalResult: Array[(String, Int)] = result.collect()
- //将定长数组转为不定长数组
- println(finalResult.toBuffer)
- //8.关闭sparkContext对象
- sparkContext.stop()
- }
-
-
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。