1:spark是什么
Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。
2:spark和Hadoop的区别-使用场景
Hadoop:一次性数据计算,框架在处理数据的时候,会从存储设备中读取数据,进行逻辑 *** 作,然后将处理的结果重新存储到介质中。
spark:spark和Hadoop的根本差异是多个作业之间的数据通信问题:spark多个作业之间数据通信是基于内存,而Hadoop是基于磁盘的
3:spark核心模块
spark core:spark最基础与最核心的功能
spark sql:spark用来 *** 作结构化数据的组件
spark streaming:spark平台上针对实时数据进行流式计算的组件
spark mllib:机器学习的算法库
spark graphx:面向图计算提供的框架与算法库
4:word count案例的两种实现方式----常用第二种
package com.atguigu.bigdata.spark.wc import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object Spark01_WordCount { def main(args: Array[String]): Unit = { //application //spark框架 //建立和spark的连接,本地环境 val sparConf = new SparkConf().setMaster("local").setAppName("WordCount") val sc = new SparkContext(sparConf); //执行业务 *** 作 //1.读取文件,获取一行一行的数据 "hello world" val lines:RDD[String] = sc.textFile("datas"); //2.将一行数据进行拆分,形成一个一个的单词 "hello word"=>hello,word val words:RDD[String] = lines.flatMap(_.split(" ")); //3.将数据根据单词进行分组,便于统计 (hello,hello,hello)(world,world) val wordGroup:RDD[(String,Iterable[String])] = words.groupBy(word=>word); //4.对分组的数据进行转换 (hello,3) (world,2) val wordToCount = wordGroup.map{ case (word,list) => { (word,list.size) } } //5.采集输出控制台 val array:Array[(String,Int)] = wordToCount.collect() array.foreach(println) //关闭连接 sc.stop(); } }
package com.atguigu.bigdata.spark.wc import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object Spark02_WordCount { def main(args: Array[String]): Unit = { //application //spark框架 //建立和spark的连接,本地环境 val sparConf = new SparkConf().setMaster("local").setAppName("WordCount") val sc = new SparkContext(sparConf); //执行业务 *** 作 //1.读取文件,获取一行一行的数据 "hello world" val lines:RDD[String] = sc.textFile("datas"); //2.将一行数据进行拆分,形成一个一个的单词 "hello word"=>hello,word val words:RDD[String] = lines.flatMap(_.split(" ")); //3.分为每个单词之后,都标记为1 val wordToOne = words.map{ word => (word,1) } //4.将数据根据单词进行分组,便于统计 (hello,hello,hello)(world,world) val groupRDD:RDD[(String,Iterable[(String,Int)])] = wordToOne.groupBy( t => t._1 ) //5.对分组的数据进行转换 (hello,3) (world,2) val wordToCount = groupRDD.map{ case (word,list) => { list.reduce( (t1, t2) => { (t1._1, t1._2 + t2._2) } ) } } //6.采集输出控制台 val array:Array[(String,Int)] = wordToCount.collect() array.foreach(println) //关闭连接 sc.stop(); } }
5:使用spark函数,实现word count
package com.atguigu.bigdata.spark.wc import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object Spark03_WordCount { def main(args: Array[String]): Unit = { //application //spark框架 //建立和spark的连接,本地环境 val sparConf = new SparkConf().setMaster("local").setAppName("WordCount") val sc = new SparkContext(sparConf); //执行业务 *** 作 //1.读取文件,获取一行一行的数据 "hello world" val lines:RDD[String] = sc.textFile("datas"); //2.将一行数据进行拆分,形成一个一个的单词 "hello word"=>hello,word val words:RDD[String] = lines.flatMap(_.split(" ")); //3.分为每个单词之后,都标记为1 val wordToOne = words.map{ word => (word,1) } //spark框架提供了更多的功能,可以将分组和聚合使用一个方法实现 //相同的key的数据,可以对value进行reduce聚合 val wordToCount = wordToOne.reduceByKey((x,y) => {x+y}) val array:Array[(String,Int)] = wordToCount.collect() array.foreach(println) //关闭连接 sc.stop(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)