Spark2.x学习笔记:6、在Windows平台下搭建Spark开发环境(Intellij IDEA)
上面这个教程介绍得非常详细,包括 Maven 的安装等等。
下面是针对 上面教程的一些补充说明。
4.1.4 中
没有告诉 localRepository 在哪个文件下,
是在 %MAVEN_HOME%/conf/setting.xml 里
而且,它 的代码 最后少了个 ">"
6.4 中
最新版本的 IntelliJ IDEA 已经包含了 Maven,可以不用安装,但笔者安装了,暂不清楚不安装,选择 IntelliJ IDEA 自带的 Maven 会出现什么问题。
6.7中
第三张图,Maven Home directory 要选择自己本地的Manve安装路径。一般 intelliJ IDEA 会自己检索到。
三个框里要选择 自己安装的 Maven 路径。并在Maven路径下找到 settings.xmll。
要把 Override 选上!
修改之后,只是修改当前项目的 maven仓库地址,并没有全局修改 maven仓库地址,修改全局方法:
6.8 编辑代码中
给出了 Spark2.2 的Maven库地址,作者给的地址是特定的某个版本所在的地址,
这里可以按照这个地址:http://mvnrepository.com/artifact/org.apache.spark,然后选择第一个 也就是最近日期的这个:
进入后,选择 ..0 以后的版本,一般 ..0 有很多BUG,选择 ..1 会更稳定一些
然后复制红色框中的代码,粘贴到 pom.xml 中 <dependencies>...</dependencies> 标签里。
复制后,右下角会有这样的提示,选择 Enable Auto-Import” ,会自动下载,要等几分钟...
创建一个 scala文件的方法:
创建之后,可以按教程的示例代码复制粘贴,看下,如果出现这种问题:
是因为 scala 版本和 spark版本不对应,在 spark 官方下载页面,可以看到spark和scala 版本对应关系:
上面的意思是:从 spark 2.0版本开始,就默认使用 scala 2.11的版本,如果还在用 scala 2.0版本的用户,就需要自己手动编译 spark了。
我们不手动编译,在 pom.xml 中改一下 scala版本即可:
在编译的时候,可能还会遇到这样的错误:
scala signature JUnit4 has wrong version
这是因为 在Maven项目中的test文件里 JUnit版本不匹配造成的,我们暂时不使用单元测试功能,所以先把 test文件夹 删掉:
java.lang.NoClassDefFoundError: scala/xml/MetaData
解决办法是在pom文件中引入scala.xml的jar包:
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-xml</artifactId>
<version>2.11.0-M4</version>
</dependency>
java.lang.NoSuchMethodError: scala.Predef$.$scope()Lscala/xml/TopScope$;
spark-core_2.11 改成 spark-core_2.11
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.1</version>
</dependency>
18/04/28 10:06:36 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
原因是在 windows 下调试spark程序,需要在 windows下安装 hadoop,而且需要在 windows中 配置环境变量 HADOOP_HOME ,然后在代码里加上 System.setProperty("hadoop.home.dir", "d:/hadoop");并查看Windows环境下Hadoop目录下的bin目录下有没有winutils.exe,没有就下一个拷贝过去。。。先不搞了,感觉还是打好 jar包 拷贝到 linux 中运行比较好