在学习大数据的过程中,已经了解了MapReduce的框架和使用,并了解了其底层数据处理的实现方式。接下来,就让咱们走进 Spark 的世界,了解一下它是如何带领我们完成数据处理的。
创建项目
首先通过IDEA创建MAVEN项目:
groupId:取名为com.atguigu.bigdata
name:atguigu-classes
项目进来之后,删掉Src模块,创建spark-core的Module,添加Scala的依赖,首先自己去官网下载Scala,这里下载的是2.12版本。
创建完的项目结构:
接着添加项目的支持:
到全局变量这里,添加Scala的依赖:
选择所对应的版本。
导入依赖
因为我们要使用Spark,所以首先要建立和Spark的连接,在spark-core的
pom.xml中引入spark的依赖:
<artifactId>spark-core</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
编写datas文件
创建directory,取名为datas,里面创建两个file,一个1.txt 一个2.txt:
内容为用空格切分
编写WordCount案例
接着创建包,包名取为:com.atguigu.bigdata.spark.core.wc,创建Scala类,选择Object类型:
package com.atguigu.bigdata.spark.core.wc
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object Spark01_WordCount {
def main(args: Array[String]): Unit = {
//Application
//Spark框架
//TODO 建立和Spark框架的连接
//JDBC:Connction
val sparkConf=new SparkConf().setMaster("local").setAppName("WordCount")
val sc =new SparkContext(sparkConf);
//TODO 执行业务操作
//1.读取文件,获取一行一行的数据
//hello world
val lines: RDD[String] = sc.textFile("datas")
//2.将行数据拆分,形成1个1个单词(分词)
// "hello world"=>hello world,hello spark
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,hello,hello),(world,world)
//(hello,3) (world,2)
val wordToCount = wordGroup.map{
case (word,list)=>{
(word,list.size)
}
}
//5.将转换结果采集到控制台打印出来
val array = wordToCount.collect()
array.foreach(println)
//TODO 关闭连接
sc.stop()
}
}
结果: