IDEA上创建第一个Spark项目

IDEA上创建第一个Spark项目

编程语言选择

可以选择Java或者Scala。
注意:如果选择Scala进行Spark编程,我们需要明确Spark版本和Scala的版本对应关系。在Spark官网已经进行了相关说明:

1
2
## 请注意,Spark 2.x是用Scala 2.11预构建的,除了2.4.2版本,后者是用Scala 2.12预构建的。Spark 3.0+预装了Scala 2.12。
Note that, Spark 2.x is pre-built with Scala 2.11 except version 2.4.2, which is pre-built with Scala 2.12. Spark 3.0+ is pre-built with Scala 2.12.

环境准备

这里主要是Scala相关版本的准备(默认IDEA已配置JAVA1.8+环境)。
Scala官网下载地址:https://www.scala-lang.org/download/
由于我们采用的是Spark3.0+,这里选择scala-2.12.12.zip
下载完成之后解压到指定目录,打开IDEA开始配置。
File->Project Structure->Global Libraries->Scala SDK,选择Browser,找到之前解压好的Scala文件夹即可。

创建Maven项目

环境准备好之后,我们创建一个名叫spark-demo的普通Maven项目。在这里我们还需要添加框架支持。
选中项目右键->选择Add FrameWorks Support,勾选Scala即可。

运行WordCount

添加pom依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spark.version>3.0.1</spark.version>
<java.version>1.8</java.version>
<scala.binary.version>2.12</scala.binary.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

<dependencies>
<!--Spark核心依赖-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
</dependency>
</dependencies>

Demo代码

新建一个WordCount的Scala Object,点击运行即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// SparkContext初始化
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("SparkWordCountDemo")
val sc = new SparkContext(sparkConf)
// 读取数据文件
val fileRDD: RDD[String] = sc.textFile("datas/hello.txt")
// 扁平化操作
val words: RDD[String] = fileRDD.flatMap(_.split(","))
// 转换数据结构word=>(word,1)
val mapRDD: RDD[(String, Int)] = words.map((_, 1))
// 归约计算
val resRDD: RDD[(String, Int)] = mapRDD.reduceByKey(_ + _)
// 调用collect函数到内存
val resArray: Array[(String, Int)] = resRDD.collect()
// 遍历输出
resArray.foreach(println)
// 关闭Spark连接
sc.stop()

注意事项

在IDEA的使用过程中,有时候可能出现无法新建Scala文件的情况,此时需要我们删除Global Libraries中的scala配置项并重新添加。
在IDEA中以本地模式运行Spark项目的时候是不需要在本地搭建Spark和Hadoop环境的。

通用开发流程

实际上不管是WordCount还是其它更为复杂的业务实现,开发流程基本一致。简单点来说可以分为以下几部分:

  1. 新建连接:用于连接Spark集群。包括SparkContext上下文对象和SparkConf对象
  2. 读取源数据:实际开发中一般是从HDFS上读取数据,这里我们是从本地读取
  3. 业务逻辑处理:根据实际情况处理业务逻辑
  4. 数据持久化:将处理好的业务数据保存到MySQL或其它数据库中,这里我们是直接打印输出
  5. 关闭连接:主要是SparkContext的关闭
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2023 henrrywan

请我喝杯咖啡吧~

支付宝
微信