package com.uplooking.bigdata.core.p1
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
* Scala版本的一个WordCount程序
* master为yarn
*/
object SparkLocalWCApp {
def main(args: Array[String]): Unit = {
/**
* 1、创建SparkConf[当前Application运行所依赖的配置信息]
*/
val conf:SparkConf = new SparkConf().setMaster("local").setAppName("SparkLocalWCApp")
/**
* 2、基于SparkConf,创建SparkContext
*/
val sc:SparkContext = new SparkContext(conf)
/**
* 3、通过SparkContext,加载数据并创建RDD
*/
val linesRDD:RDD[String] = sc.textFile("E:/test/spark/core/hello.txt")
/**
* 4、对linesRDD中的每一行数据,将其拆分成独立的单词
*/
val wordsRDD:RDD[String] = linesRDD.flatMap(line => line.split(" "))
/**
* 5、将wordsRDD中的每一单词,转换为一个Tuple2[String, Int]
*/
val pairRDD:RDD[(String, Int)] = wordsRDD.map(word => new Tuple2[String, Int](word, 1))
/**
* 6、按照pairRDD中的key,对数据进行聚合
*/
val retRDD:RDD[(String, Int)] = pairRDD.reduceByKey((v1, v2) => merge(v1, v2))
/**
* 通过一个action动作,触发上述transformation转换算子的执行
*
*/
retRDD.foreach(t => println(t))
// sc.textFile("E:/test/spark/core/hello.txt").flatMap(line => line.split(" ")).map((_, 1)).reduceByKey(_+_).foreach(println)
}
def merge(v1:Int, v2:Int):Int = v1 + v2
}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
* Scala版本的一个WordCount程序
* master为yarn
*/
object SparkLocalWCApp {
def main(args: Array[String]): Unit = {
/**
* 1、创建SparkConf[当前Application运行所依赖的配置信息]
*/
val conf:SparkConf = new SparkConf().setMaster("local").setAppName("SparkLocalWCApp")
/**
* 2、基于SparkConf,创建SparkContext
*/
val sc:SparkContext = new SparkContext(conf)
/**
* 3、通过SparkContext,加载数据并创建RDD
*/
val linesRDD:RDD[String] = sc.textFile("E:/test/spark/core/hello.txt")
/**
* 4、对linesRDD中的每一行数据,将其拆分成独立的单词
*/
val wordsRDD:RDD[String] = linesRDD.flatMap(line => line.split(" "))
/**
* 5、将wordsRDD中的每一单词,转换为一个Tuple2[String, Int]
*/
val pairRDD:RDD[(String, Int)] = wordsRDD.map(word => new Tuple2[String, Int](word, 1))
/**
* 6、按照pairRDD中的key,对数据进行聚合
*/
val retRDD:RDD[(String, Int)] = pairRDD.reduceByKey((v1, v2) => merge(v1, v2))
/**
* 通过一个action动作,触发上述transformation转换算子的执行
*
*/
retRDD.foreach(t => println(t))
// sc.textFile("E:/test/spark/core/hello.txt").flatMap(line => line.split(" ")).map((_, 1)).reduceByKey(_+_).foreach(println)
}
def merge(v1:Int, v2:Int):Int = v1 + v2
}