前提:
1.先安装好Eclipse依赖的环境;
2.Eclipse的各种优化配置
环境:
OS: Deepin15.11
JDK: 1.8.0_221
Maven: 3.6.2
Eclipse-JEE: 2019-06 (4.12.0)
注意:
Spark严格依赖与Scala的版本,请不要随意下载各自的最新版,如果不知道Spark对应的版本,可以访问spark的官网下载页:
http://spark.apache.org/downloads.html 页面上有说明对应的scala的版本对应!例如:
groupId: org.apache.spark
artifactId: spark-core_2.11
version: 2.4.4
2.4.4是spark的版本,2.11是Scala的版本!!
1.安装Eclipse两个必须的插件:
A.Scala IDE 从在线商店就可以安装,仅选择Scala IDE for Eclipse项即可;
B.m2eclipse-scala插件,通过在线站点的方式安装。
Name:m2eclipse-scala
Location:http://alchim31.free.fr/m2e-scala/update-site
2.创建Maven项目,但是使用作者的项目模板
https://github.com/spark-in-action/scala-archetype-sparkinaction/raw/master/archetype-catalog.xml
Spark in Action
3.项目创建时,将会依据模板文件初始化项目
注意,如果使用中央仓库,会很慢,甚至失败!
可以配置Maven使用阿里云的maven仓库,加快初始化速度。
4.创建项目运行配置:
5.运行项目
A.发现报错:错误: 找不到或无法加载主类 org.sia.chapter03App.App
点击Problems页签:
说明:Scala版本不匹配!!!Spark2.4.4对应Scala2.11.0
解决:
A1.修改项目的POM文件为:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<encoding>UTF-8</encoding>
<scala.tools.version>2.11</scala.tools.version>
<scala.version>2.11.0</scala.version>
<spark.version>2.4.4</spark.version>
</properties>
A2.升级插件版本:
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>4.2.0</version> 原来为3.2.0
B.再次运行:报错java.lang.NoClassDefFoundError: scala/Product$class
原因:编译器的版本不匹配,Eclipse使用了2.12版本,Scala的编译器的版本也要匹配用2.11版本
解决:项目根目录右键Properties,按照下图更改:
C.再次运行:报错java.io.FileNotFoundException: /usr/local/spark/logs/info.log (没有那个文件或目录) ---作者虚拟机里的这个路径是OK的
原因:作者项目的log4j的日志文件目录路径是写死的,我的却不是在那个目录
解决:更改日志文件路径即可!
log4j.appender.file.File=logs/info.log
5.再次运行项目,成功:
此时Problems页面发现还有错误,但是已经提示更新项目的解决方法:
在项目的根目录,右键--》Maven--》Update Project...后就完美解决了!