Spark Installation with Maven & Eclipse IDE
- 安装说明
- Maven & Eclipse IDE说明
- 参考网站
- 安装过程
- JDK安装
- Eclipse IDE安装
- Maven安装
- Spark安装
- 新建Maven项目
- 配置Maven依赖(安装Spark框架)
- `pom.xml`文件说明
- 配置Run指令
- 运行
安装说明
更多关注https://www.zhihu.com/column/c_1488286320929333249
目前存在多种安装Spark框架的方式。经过实验和比较,在Windows 10操作系统上通过Maven和Eclipse IDE来安装Spark框架较为方便。在Linux操作系统上,也推荐通过Maven来安装Spark框架。
Maven & Eclipse IDE说明
Maven是一个主要为Java项目提供统一的编译系统,简化编译过程,提供项目依赖管理和项目版本管理的程序开发框架。
Eclipse IDE是一个可在Linux/macOS/Windows上运行的集成开发环境。它主要支持Java项目开发,同时也支持多种开发语言,以及Ant,Maven等项目编译框架。
参考网站
- Maven项目官方网站
- Eclipse项目官方网站
安装过程
JDK安装
JDK (Java Development Kit)是由Oracle维护的Java开发程序包。目前最新的版本是JDK 14。由于兼容性问题,目前依然有许多项目使用JDK 8。现在我们选择安装最新的稳定版即可。
Eclipse IDE安装
Eclipse IDE安装要下载一个在线安装程序并运行。安装过程需要连接外网。如果需要在没有网络环境的计算机上安装Eclipse,可以在官网上选Download Package(在DOWNLOAD 64 BIT按钮下面)。
安装时选择第一项,Eclipse IDE for Java Developers
安装Eclipse IDE前最好先安装JDK,安装程序会自动搜索JDK的安装位置并进行设置,否则之后再来配置会比较麻烦。
Maven安装
Eclipse IDE已经自动集成了Maven框架。
Spark安装
我们使用Eclipse自带的Maven来安装Spark
新建Maven项目
- 打开Eclipse以后,先新建一个Maven项目。选择菜单栏中的Flie -> New -> Project…,在弹出窗口中选择Maven -> Maven Project
- 在New Maven Project窗口中,勾选"Create a simple project (skip archetype selection)"(之后我们手动配置),点击Next按钮
- 配置这个新的Maven项目,可以选择方便自己记忆的名字。我的命名如下:
- Group Id: me.spark.app
- Artifact Id: mySparkApp
- Version: 1.0
- Packaging: jar
- Name: playersStats
- 点击Finish按钮,至此完成新建Maven项目。你可以在左侧的Package Explorer里找到这个项目
配置Maven依赖(安装Spark框架)
pom.xml文件说明
新建完Maven项目之后,可以在项目中找到一个名为pom.xml的文件。通过修改这个文件的内容,我们就可以利用强大的Maven框架解决许多依赖和编译问题。
以下是我的pom.xml文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>me.spark.app</groupId>
<artifactId>playersStats</artifactId>
<version>1.0</version>
<name>playersStats</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>14</maven.compiler.source>
<maven.compiler.target>14</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-assembly-plugin -->
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>me.spark.app.playersStats.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
几点说明:
- 一旦在Eclipse中保存pom.xml文件,Maven就会自动开始进行依赖包安装和配置。安装过程中会使Eclipse IDE有些许卡顿,此时尽量停止操作来避免程序崩溃
- 该项目所有的.java源文件的package我设置为me.spark.app.playersStats(其实可以自行选择,但最好和Maven项目属性保持一致)
- Properties为项目的基本配置,里面的maven.compiler.source和maven.compiler.target为JDK版本设置,应该与你安装的JDK版本保持一致(注意这里指的是正式版本号的前缀,JDK 14应该设置14,而JDK8应该设置1.8)
- Dependencies为项目的依赖包。maven-assembly-plugin用于编译,而spark-core_2.12和spark-sql_2.12则代表用Scala 2.12编译的Spark Core和Spark SQL框架。如果需要使用Spark框架的其他部分(比如MLlib)或者其他框架,则需要在这里添加相应的程序包,其相应的dependency配置可在Maven Repository网站上找到
- Build为项目的编译配置。这里使用maven-assembly-plugin在打包JAR过程中将依赖包也打进去,否则调用JAR包中依赖Spark框架的类会出现问题。
配置Run指令
可以通过右键Package Explorer中项目名字 -> Run As -> Maven Build…(注意选后面有三个点的)来添加Run指令。
我设置的一些Run指令
- Name: playersStats-compile
- Goals: clean compile assembly:single
- Name: playersStats-exec
- Goals: exec:java -e
- Parameters (通过Add…添加)
- Parameter Name: exec.mainClass
- Value: me.spark.app.playersStats.Main
运行
在src/main/java中右键选择New -> Class并设置类名为Main,并在Main.java中的main函数中写好Spark测试程序,就可以通过先后通过compile和exec运行程序了。参考测试代码如下:
// package...
// import org.apache.spark....
// import ...
public static void main(String[] args) throws Exception {
SparkSession spark = SparkSession
.builder()
.appName("Java Spark SQL basic example")
.config("spark.master", "local")
.getOrCreate();
Dataset<Row> df = spark.read()
.option("header", "true")
.option("inferSchema", "true")
.csv("data/players_stats_by_season_full_details.csv");
df.printSchema();
df.select("Player").show();
df.select(col("Player"), col("GP")).show();
df.filter(col("GP").gt(75)).show();
spark.stop();
}