前提:
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...後就完美解決了!