Spark是一种由scala编写的快速、通用、可扩展的大数据分析引擎
一、简单介绍
下面是对spark的简单介绍,嗯,主要就是说下spark有多好多好的,不想看的可以直接去看写项目
特点
1)快:基于内存进行计算,快。
2)易用:支持java,python,scala API,语法简洁。
3)通用:针对于大数据离线,实时有一系列处理方案,方便。
4)兼容性:基于java,可以很好的和其他大数据技术融合,比如说使用YARN调用。
二、写项目
我们先去写一个最简单应用让大家理解Spark,使用Spark的方法其实和其他框架都差不多,第一步多需要插入jar包,
1、jar包
我们需要先创建一个普通maven项目,然后在项目pom文件下引入maven依赖,如果引入过了就不需要引入了。
这里注意,我是用的软件是idea,需要提前在idea中下载scala插件
<dependencies>
<!-- scala依赖 开始 -->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-reflect</artifactId>
<version>2.12.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.12.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-compiler</artifactId>
<version>2.12.8</version>
<scope>compile</scope>
</dependency>
<!-- scala依赖 结束 -->
<!-- spark依赖 开始 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.12</artifactId>
<version>2.4.3</version>
</dependency>
<!-- spark依赖 结束 -->
</dependencies>
<build>
<plugins>
<!-- 该插件用于将 Scala 代码编译成 class 文件 -->
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.4.6</version>
<executions>
<execution>
<!-- 声明绑定到 maven 的 compile 阶段 -->
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2、创建数据集
我们需要创建一个数据集,让spark可以用于计算,在项目目录下创建data文件夹存放数据,创建word文件并输入下面的内容,
java~hadoop~java
html~js
java
js~jquery
接下来的任务就是使用spark统计整个文档中每个单词出现的数量
3、编写对应的处理类开始计算
在java(不喜欢也可以重命名scala)文件夹下创建包,然后创建WordCount.scala文件,注意文件类型为object,使用Spark的顺序大致为
1、创建Spark上下文
2、读取数据文件
3、处理转换数据为合适的格式
4、统计计算
具体处理代码如下
object WordCount {
def main(args: Array[String]): Unit = {
// 创建Spark上下文
/*
其中master指的是运行模式
1、local模式
本地模式,所有计算都运行在一个线程当中,没有任何并行计算,通常练习时使用
local[K]:这里的k指的是运行的k个进程,
local[*]:按照CPU最多的核心设置进程
2、Standalone模式
运行在集群上
3、Yarn模式
运行yarn上,不布置额外的集群
4、Mesos模式
运行在Mesos上, Mesos是Apache下的开源分布式资源管理框架
*/
val spark = new SparkContext("local",
"WordCount")
// 读取数据,word就是刚创建的文件
val data = spark.textFile("data/word")
// 转换为方便计算的格式
val result = data
.flatMap(_.split("~")) // 使用~切分每条记录,这里面的_代表data中的一条记录,spark会根据换行符进行切分,然后分别传入
.map((_,1)) // java,1 html,1
.countByKey() // 最后一步,统计相同key值的数量
println(result)
}
}
运行main函数,就开始执行整个程序,最后会打印每个单词出现的数量,输出结果如下
Map(java -> 3, hadoop -> 1, jquery -> 1, js -> 2, html -> 1)
这个就是一个最为简单的Spark使用案例,但是也是个最为常用的例子,我们可以根据这个例子做很多内容,比如说统计一个购物数据集中,某商品ID出现的次数,使用这个次数表示商品的受欢迎程度。
代码地址在下面:
https://gitee.com/lihao2/blog-code.git
名称和博客名称相同
我将在下一篇中讲如何使用上面例子相关方法,去统计某市,最受欢迎的美食种类。关注博主不走丢