前言


本文重点介绍在如何Windows 10下开发spark应用程序的依赖环境的搭建。

本章概要


  1. 版本说明
  2. 环境配置
  3. jdk配置
  4. scala安装配置
  5. spark安装配置
  6. hadoop安装配置
  7. Intellij IDEA下载与配置

版本说明


  1. jdk:1.8
  2. scala:2.12.0
  3. spark:2.4.3
  4. hadoop:2.7.7

环境配置


jdk配置

  1. 下载:登录Oracle官网,接受协议,注册登录,选择对应版本。因为我的本机是64位Windows,所以需要下载64位(Windows x64)JDK安装包。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL0luZmluaXRlWWludXgvY2xvdWRAbWFzdGVyL2ltZy9zcGFyay1pbml0L2pka2Rvd25sb2FkLnBuZw?x-oss-process=image/format,png)
2. Windows下安装JDK非常方便,双击安装程序后,直接单击下一步即可,默认安装到` C:\Program Files\Java`目录下。其间会安装JRE,默认一下步即可。 3. 设置环境变量 :右键单击桌面上的“此电脑”图标,在弹出的右键快捷菜单中选择最后一个“属性”选项;在弹出的系统窗口中,单击左侧“高级系统设置”选项,弹出“系统属性”对话框,如下图。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL0luZmluaXRlWWludXgvY2xvdWRAbWFzdGVyL2ltZy9zcGFyay1pbml0L2pka3BhdGgucG5n?x-oss-process=image/format,png)
然后单击中间的“高级”选项卡,再单击下方的“环境变量(N)…”按钮。在弹出的环境变量对话框中,首先单击下方的“新建(W)…”按钮,然后在弹出的新建环境变量中输入对应的值。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL0luZmluaXRlWWludXgvY2xvdWRAbWFzdGVyL2ltZy9zcGFyay1pbml0L2pka3BhdGgxLnBuZw?x-oss-process=image/format,png)
在环境变量中找到“Path”添加jdk和jre下bin的地址,如下图:
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL0luZmluaXRlWWludXgvY2xvdWRAbWFzdGVyL2ltZy9zcGFyay1pbml0L2pka3BhdGgyLnBuZw?x-oss-process=image/format,png)
新建`CLASS_PATH`,如下图:
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL0luZmluaXRlWWludXgvY2xvdWRAbWFzdGVyL2ltZy9zcGFyay1pbml0L2pka3BhdGgzLnBuZw?x-oss-process=image/format,png)
检验配置是否成功,在cmd中运行java -version出现以下结果则说明jdk安装配置成功。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL0luZmluaXRlWWludXgvY2xvdWRAbWFzdGVyL2ltZy9zcGFyay1pbml0L2pka3BhdGg0LnBuZw?x-oss-process=image/format,png)

scala安装配置

  1. 下载:通过Spark官网下载页面 可知“Note: Starting version 2.0, Spark is built with Scala 2.11 by default.”,下载Spark2.4.3对应的 Scala 2.12.x。登录Scala官网,单击download按钮,然后再“Other Releases”标题下找到“Last 2.12.x maintenance release - Scala 2.12.0”链接。进入downloan页面,下拉找到如下图内容,下载msi格式的安装包即可。
  2. 安装: 默认安装到C:\Program Files (x86)\scala目录下
  3. 环境变量:与设置Java环境变量类型, SCALA_HOME=C:\Program Files (x86)\scala Path环境变量在最后追加;设置成功后在win+R输入cmd后打开命令行输入scala -version可以看到安装的版本%SCALA_HOME%\bin

安装Maven

  1. Maven的安装与配置可以参考:《Hadoop基础教程-第4章 HDFS的Java API(4.1 Maven入门)Intellij IDEA上自带Maven,本文不再详细介绍

Intellij IDEA下载与配置

  1. 下载与安装:登录官网,按照自己的需求下载(ultimate,旗舰版)或者(Community,社区版)。Ultimate版本是商业软件,需要付费,Community 版为免费版,足够平时日常开发需要。比如这里直接下载Community
  2. 启动,安装完成后,单击IntelliJ IDEA图标即可启动IntelliJ IDEA. 由于是第一次安装,所以不需要导入配置。默认选项即可。
  3. 选择“Evaluate for free”进入免费版
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7248aeAc-1579614262511)(https://cdn.jsdelivr.net/gh/InfiniteYinux/cloud@master/img/spark-init/idea3.png)]
    可以根据自身的习惯选择风格,并点击左下角“Skip Remaining and Set Default”
  4. 安装scala插件:点击左下角:Configure->Plugins 搜索并安装scala
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qi0TeMUF-1579614262515)(https://cdn.jsdelivr.net/gh/InfiniteYinux/cloud@master/img/spark-init/idea5.png)]
    安装完成后重启IDEA,然后开始配置全局scala SDK[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ENmymJCX-1579614262518)(https://cdn.jsdelivr.net/gh/InfiniteYinux/cloud@master/img/spark-init/idea7.png)]
  5. 配置JDK: 首先打开Project Structure,如下图然后我们添加上文安装的JDK,配置完成后点击OK,如下图:
  6. 配置JDK 配置全局scala SDK:选中“Global Libraries”,点击“+”号,在弹出的菜单中选中“Scala SDK”,如下图:在弹出的“Select JAR's for the new Scala SDK”中选择与本机scala版本一致的Version,在这里由于我的scala版本是2.12.0 所以我选择的是2.12.0版本点击右下角OK完成配置

创建Maven项目

  1. 单击“Create New Project选择maven点击Next,填写GroupIDArtifactID点击Next,如下图:点击Finish,如下图:(在此步骤可以更改Content root 和 Module file location 的路径)创建完后右下角如果出现提示:请点击Enable Auto-Import
  2. 创建完后将scala框架添加到项目(若不设置有可能无法创建 scala class):在IDEA启动后进入的界面中,可以看到界面左侧的项目界面,已经有一个名称为simpleSpark的工程。请在该工程名称上右键单击,在弹出的菜单中,选择Add Framework Surport,在左侧有一排可勾选项,找到scala,勾选即可(我的这里没有找到,但是也能运行,为了确保无误,借用haijiege的图)
  3. 将项目文件设置为source root ,选中scala–>右键快捷菜单–>Mark Directory as –>Sources root[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DHfaizDO-1579614262541)(https://cdn.jsdelivr.net/gh/InfiniteYinux/cloud@master/img/spark-init/idea18.png)]

编辑代码

  1. pom.xml
    Spark2.4.3 Maven库请参见 https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.12/2.4.3

    <modelVersion>4.0.0</modelVersion>
    <groupId>Test.pack</groupId>
    <artifactId>SparkTest</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <inceptionYear>2008</inceptionYear>
    <properties>
        <spark.version>2.4.3</spark.version>
        <scala.version>2.12.0</scala.version>
    </properties>

    <repositories>
        <repository>
            <id>nexus-aliyun</id>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>scala-tools.org</id>
            <name>Scala-Tools Maven2 Repository</name>
            <url>http://scala-tools.org/repo-releases</url>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>2.4.3</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.4</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.specs</groupId>
            <artifactId>specs</artifactId>
            <version>1.2.5</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2-beta-5</version>
                <configuration>
                    <classifier>dist</classifier>
                    <appendAssemblyId>true</appendAssemblyId>
                    <descriptorRefs>
                        <descriptor>jar-with-dependencies</descriptor>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

  1. 保存pom.xml文件后,如果Intellij IDEA右下角出现如下提示,请单击“Enable Auto-Import

  2. WordCount.scala :新建Scala ClassWordCount.scala,Scala源文件后缀名是.scala。通过右键刚刚设置为sources root的scala文件夹,就有了new->scala class的选项。新建一个scala class,并且命名WordCount,选择object类型。打开建好的WordCount.scala文件,清空!然后黏贴以下代码:

程序运行


文件

数据文件

sampleDataSet

程序文件

WordCount

运行

在源文件代码中右键单击–>Run “WordCount”[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L7OTZcNh-1579614262544)(https://cdn.jsdelivr.net/gh/InfiniteYinux/cloud@master/img/spark-init/idea19.png)]

运行结果如下(输出的信息较多请上下翻一下就能找到)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xJ0QMmFh-1579614262545)(https://cdn.jsdelivr.net/gh/InfiniteYinux/cloud@master/img/spark-init/idea20.png)]
dCount`”[外链图片转存中…(img-L7OTZcNh-1579614262544)]

运行结果如下(输出的信息较多请上下翻一下就能找到)[外链图片转存中…(img-xJ0QMmFh-1579614262545)]