前言
本文重点介绍在如何Windows 10下开发spark应用程序的依赖环境的搭建。
本章概要
- 版本说明
 - 环境配置
 - jdk配置
 - scala安装配置
 - spark安装配置
 - hadoop安装配置
 - Intellij IDEA下载与配置
 
版本说明
- jdk:1.8
 - scala:2.12.0
 - spark:2.4.3
 - hadoop:2.7.7
 
环境配置
jdk配置
- 下载:登录Oracle官网,接受协议,注册登录,选择对应版本。因为我的本机是64位Windows,所以需要下载64位(Windows x64)JDK安装包。
 
scala安装配置
- 下载:通过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格式的安装包即可。 - 安装: 默认安装到
C:\Program Files (x86)\scala目录下 - 环境变量:与设置Java环境变量类型, 
SCALA_HOME=C:\Program Files (x86)\scalaPath环境变量在最后追加;设置成功后在win+R输入cmd后打开命令行输入scala -version可以看到安装的版本%SCALA_HOME%\bin; 
安装Maven
- Maven的安装与配置可以参考:《Hadoop基础教程-第4章 HDFS的Java API(4.1 Maven入门)》
Intellij IDEA上自带Maven,本文不再详细介绍 
Intellij IDEA下载与配置
- 下载与安装:登录官网,按照自己的需求下载(
ultimate,旗舰版)或者(Community,社区版)。Ultimate版本是商业软件,需要付费,Community版为免费版,足够平时日常开发需要。比如这里直接下载Community - 启动,安装完成后,单击
IntelliJ IDEA图标即可启动IntelliJ IDEA. 由于是第一次安装,所以不需要导入配置。默认选项即可。 - 选择“Evaluate for free”进入免费版    
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7248aeAc-1579614262511)(https://cdn.jsdelivr.net/gh/InfiniteYinux/cloud@master/img/spark-init/idea3.png)] 可以根据自身的习惯选择风格,并点击左下角“Skip Remaining and Set Default” - 安装
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)] - 配置JDK: 首先打开
Project Structure,如下图然后我们添加上文安装的JDK,配置完成后点击OK,如下图: - 配置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项目
- 单击“
Create New Project”选择maven
点击
Next,填写GroupID和ArtifactID点击Next,如下图:
点击Finish,如下图:(在此步骤可以更改Content root 和 Module file location 的路径)
创建完后右下角如果出现提示:
请点击
Enable Auto-Import - 创建完后将scala框架添加到项目(若不设置有可能无法创建 scala class):在IDEA启动后进入的界面中,可以看到界面左侧的项目界面,已经有一个名称为simpleSpark的工程。请在该工程名称上右键单击,在弹出的菜单中,选择
Add Framework Surport,在左侧有一排可勾选项,找到scala,勾选即可(我的这里没有找到,但是也能运行,为了确保无误,借用haijiege的图) - 将项目文件设置为source root ,选中scala–>右键
快捷菜单–>Mark Directory as–>Sources root[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DHfaizDO-1579614262541)(https://cdn.jsdelivr.net/gh/InfiniteYinux/cloud@master/img/spark-init/idea18.png)] 
编辑代码
- 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>
  -  
保存pom.xml文件后,如果Intellij IDEA右下角出现如下提示,请单击“
Enable Auto-Import” -  
WordCount.scala :新建
Scala Class类WordCount.scala,Scala源文件后缀名是.scala。通过右键刚刚设置为sources root的scala文件夹,就有了new->scala class的选项。新建一个scala class,并且命名WordCount,选择object类型。打开建好的WordCount.scala文件,清空!然后黏贴以下代码: 
程序运行
文件
数据文件
程序文件
运行
在源文件代码中右键单击–>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)]

京公网安备 11010502036488号