Spark 入门程序之WordCount的编写
在学习大数据的过程中几乎每个程序员都会编写WordCount程序,下面分享一下用Scala和Java两种编程语言编写WordCount程序。
1.Scala版本的WordCount的编写
package com.aura.day01.sparkcore.wc
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object SparkWordCount {
def main(args: Array[String]): Unit = {
//spark编程套路
//1.获取程序入口,初始化一个程序入口对象
val sparkConf:SparkConf = new SparkConf()
sparkConf.setMaster(args(0))
sparkConf.setAppName("SparkWordCount")
val sparkContext:SparkContext = new SparkContext(sparkConf)
//如果没有传入sparkConf作为参数,那么可以直接使用下面这句代码获取SparkContext对象
//val sparkContext1:SparkContext = new SparkContext()
//2.通过程序入口对象加载某个目录(加载某个文件系统中的某个目录),形成为一个数据抽象对象
//RDD就是这种元素的一个集合 RDD[String]代表原数据的一行
val linesRDD:RDD[String] = sparkContext.textFile("hdfs://hadoop01/wc/input/")
//3.通过这个数据抽象对象,进行各种操作,来进行业务处理,得到结果数据
//单词词频统计 这个RDD[String]代表的由linesRDD中的每一行切割出来的所有单词组成的一个新的集合
val wordRDD: RDD[String] = linesRDD.flatMap((line:String) => line.split(" "))
val wordAndOneRDD: RDD[(String, Int)] = wordRDD.map((word:String) =>(word,1))
//val unit:RDD[(String,Iterable[Int])] = wordAndOneRDD.groupByKey().reduce()
val wordsCountRDD = wordAndOneRDD.reduceByKey((a:Int,b:Int) => a + b)
//4.处理结果
// wordsCountRDD.foreach((x:(String,Int)) => println(x._1,x._2))
wordsCountRDD.saveAs