Spark开发环境搭建——Spark开发学习笔记

Posted katus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark开发环境搭建——Spark开发学习笔记相关的知识,希望对你有一定的参考价值。

前言:本人水平有限,目前在前辈的指导下进行Spark开发的自学,在此整理出自学笔记,主要是巩固一下学习的内容,如果本文内容能对各位读者有所启发,我将十分高兴。另外由于个人水平有限,所写内容难免有疏漏之处,欢迎各位批评指出。

Spark开发环境搭建

本文的操作环境和安装的版本

  • 操作系统:Windows 10 1909版本
  • IDE:IntelliJ IDEA Ultimate 2019.2.4版本
  • JDK:1.8.0_221
  • Hadoop:2.7.1
  • Spark:3.0.0-preview
  • Scala:2.12.10
  • Maven:3.6.2

一、Java环境搭建

安装java环境需要安装部署JDK和JRE,本次选择的JDK版本是1.8。前往官网即可下载,官网链接:JDK下载地址

我们选择64位Windows版本下载,然后进行安装。

安装完成之后进行系统变量的配置,需要配置如下系统变量。(请根据自己的安装目录进行设置)

  • JAVA_HOME:C:\\Program Files\\Java\\jdk1.8.0_221
  • CLASSPATH:.;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%\\lib\\tools.jar;
  • Path:%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin

完成之后在命令行分别输入java、javac命令均有相应结果,说明配置正确。

二、安装IDE

本文选用的IDE为JetBrains套件中的IntelliJ IDEA,可以前往JetBrains官网下载安装,具体安装方式不再演示。

三、Hadoop安装

本文下载的Hadoop版本为2.7.1,前往Hadoop镜像网站下载对应的Hadoop包。

在Windows环境下部署Hadoop环境与Linux不同,需要额外的文件,不单单是解压就可以了。额外的文件包括hadoop.dllwinutils.exe,这两个文件可以在4ttty的winutils GitHub项目下找到,复制这两个文件到Hadoop文件夹下的bin目录下。

实际在配置的时候如果只添加上述两个文件还是会导致Spark项目运行报错,说winutils.exe与你运行的Windows版本不兼容;后来我经过大量尝试发现需要把上述的GitHub工程中对应Hadoop版本下的bin文件夹下的全部拷贝到本机上的Hadoop/bin文件夹下才能正常。

完成后配置系统环境变量,如下。(请根据自己的安装目录进行设置)

  • HADOOP_HOME:D:\\Compilers\\hadoop-2.7.1
  • Path:%HADOOP_HOME%\\bin

四、Spark安装

Spark官网下载合适版本的Spark,需要注意版本需要契合之前安装的Hadoop版本,本文就选用3.0.0-preview版本。

和Hadoop的安装类似,解压,修改系统环境变量如下。(请根据自己的安装目录进行设置)

  • SPARK_HOME:D:\\Compilers\\spark-3.0.0-preview-bin-hadoop2.7
  • Path:%SPARK_HOME%\\bin

五、Scala语言安装

前往Scala官方网站选择相应版本的Scala版本进行安装,注意此处安装的版本需要和选用的Spark版本对应的Scala版本相一致才行,例如本文选用的Spark版本为3.0.0-preview(目前最新),其对应的适用Scala版本为2.12.10。

查询这种对应关系可以通过查看Spark中的jar包中的scala-compiler-2.XX.XX.jar,最后面的数字即为对应的Scala版本。本文中的对应jar包为scala-compiler-2.12.10,即Scala版本为2.12.10。

安装过程保持默认即可。

完成后修改系统变量如下。(请根据自己的安装目录进行设置)

  • SCALA_HOME:C:\\Program Files (x86)\\scala
  • Path:%SCALA_HOME%\\bin

六、安装maven

前往maven官网下载maven的二进制ZIP包,在特定目录解压即可。

七、工程项目环境配置

(一)IDE配置

打开IntelliJ IDEA,第一次使用需要激活、设定UI、选用下载插件,统统默认完成之后打开如下界面。


接下来需要依次设置配置下的Plugins、Structure for New Projects、Settings选项。

首先是Plugins,安装Scala插件,完成后点击OK。

然后设置Structure for New Projects,Project选项卡,点击New按钮,点击JDK选项,选择刚才安装的JDK路径,确认。

Global Libraries选项卡,点击加号,选择Scala SDK,添加刚刚在系统中安装的Scala,点击OK。

最后设置Settings,选择Build, Execution, Deployment下的Build Tools下的Maven选项卡,设置右侧Maven home directory为刚刚maven下载的解压目录,其中User settings file和Local repository可以通过勾选Override选项更换位置。此处建议将Local repository设置到其他位置。

更改repository默认位置可以通过在maven配置文件settings.xml的settings标签下增加如下代码来实现。(标签中的值为自定义设置的repository目录)

<localRepository>D:\\Compilers\\maven-repository\\repository</localRepository>

如果在一会下载依赖jar包的时候如果速度过慢,可以使用国内镜像,方法是在maven配置文件settings.xml的settings标签下的mirrors标签下增加如下代码(以阿里云镜像为例)。

<!--  阿里云镜像  -->
<mirror>
	<id>nexus-aliyun</id>
	<mirrorOf>*</mirrorOf>
	<name>Nexus aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

点击Compiler下的Java Compiler选项卡,设置合适的编译器版本,此处选择8。(截图中WordCount会在后续新建项目之后出现,后续也可以通过菜单栏再次修改Settings)

此处设置的编译器版本取决于你的Spark支持的版本、JDK版本和你的代码中所用到的Java特性。

设置完成点击OK即可。

(二)创建Maven项目

点击Create New Project,在左侧选择Maven,右侧JDK版本选择1.8,完成后点击Next。

设置GroupId和ArtifactId,没有什么具体要求,建议ArtifactId与项目名一致,完成后点击Next。

设置项目名称,项目保存路径,完成后点击Finish。

(三)配置Maven依赖

在新项目根目录下的pom.xml修改为如下代码,请注意配置时GroupId和ArtifactId请以自己的为准。

<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>zju</groupId>
    <artifactId>WordCount</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jdk.version>1.8.0</jdk.version>
        <spark.version>3.0.0-preview</spark.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.0.0-preview</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>3.0.0-preview</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_2.12</artifactId>
            <version>3.0.0-preview</version>
        </dependency>
    </dependencies>

</project>

配置Maven依赖时,如果遇到不清楚的依赖写法,可以通过在Maven存储库网站中进行查询。

然后在项目目录下的pom.xml文件上右键,点击Maven下的Reimport,重新导入依赖。(或者在右下角的提示中选择导入修改)

等待下载完成即可。

(四)示例程序测试

在新建的工程中新建WordCount类,然后增加如下代码。

import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SparkSession;
import scala.Tuple2;
import java.util.ArrayList;
import java.util.List;

public class WordCount 
    public static void main(String[] args) 
        String inputFile = "D:\\\\words.txt";
        String outputFile = "D:\\\\result";
        SparkSession session = SparkSession.builder().getOrCreate();
        JavaSparkContext sparkContext = JavaSparkContext.fromSparkContext(session.sparkContext());
        sparkContext.textFile(inputFile).flatMapToPair(s -> 
            String[] words = s.split("\\\\s");
            List<Tuple2<String, Integer>> r = new ArrayList<Tuple2<String, Integer>>();
            for (String word : words) 
                r.add(new Tuple2<String, Integer>(word, 1));
            
            return r.iterator();
        ).reduceByKey((i, j) -> i + j).saveAsTextFile(outputFile);
        session.stop();
    

在右上角配置java运行环境,配置如下。

然后点击运行,正常运行说明配置成功。

最后查看运行结果如下。

以上是关于Spark开发环境搭建——Spark开发学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Spark基础学习笔记10:Scala集成开发环境

学习笔记Spark—— 配置Spark IDEA开发环境

Spark机器学习速成宝典基础篇01Windows下spark开发环境搭建+sbt+idea(Scala版)

Spark基础学习笔记02:搭建Spark环境

学习笔记Kafka—— Kafka 与Spark集成 —— 原理介绍与开发环境配置实战

学习笔记Kafka—— Kafka 与Spark集成 —— 原理介绍与开发环境配置实战