Spark 2.x+IntelliJ IDEA 2017.3開發(fā)環(huán)境搭建和開發(fā)示例

【原創(chuàng)】Helenykwang 于2018-01-13 18:10:18編寫

不用maven敦腔,不用sbt腺晾,只需三個庫

一、環(huán)境說明

集群:Spark 2.1.2 + hadoop2.3

開發(fā)機OS:win7

Jdk 1.8.0_151

下載jre即可 http://www.oracle.com/technetwork/java/javase/downloads/index.html

注:JDK是一個平臺特定的軟件赞警,有針對Windows验辞,Mac和Unix系統(tǒng)的不同的安裝包。 可以說JDK是JRE的超集唱星,它包含了JRE的Java編譯器雳旅,調(diào)試器和核心類

scala 2.11.8 http://www.scala-lang.org/download/

IntelliJ IDEA 2017.3

spark 源碼spark-2.1.2-bin-hadoop2.3


二、環(huán)境搭建

1. 基本配置

安裝java间聊、scala攒盈,配置環(huán)境變量JAVA_HOME、SCALA_HOME為對應(yīng)安裝路徑

PATH后面添加%JAVA_HOME%\jre\bin; %SCALA_HOME%\bin

【W(wǎng)IN】%JAVA_HOME%

【Linux】$JAVA_HOME

注意:scala 安裝路徑不能有空格哎榴,否則會報錯

>>找不到或無法加載主類scala.tools.nsc.MainGenericRunner

檢驗標準

打開CMD型豁,分別執(zhí)行java僵蛛、scala命令。


2. 安裝配置IntelliJ IDEA 2017.3

初始化后偷遗,在file –settings 中添加scala插件墩瞳,重啟


三、開發(fā)示例

1. 新建工程

其實這里選個java工程就行了氏豌,不用搞那么復(fù)雜喉酌,記住關(guān)鍵是依賴庫java、scala泵喘、spark源碼庫添加好就行泪电。

下圖展示了創(chuàng)建工程時添加java-sdk、scala-sdk的過程纪铺。


創(chuàng)建一些必需的目錄相速,我的demo的目錄樹如下:

在scala目錄右鍵mark Directory as -- Source Root


2. 添加spark源碼依賴

從File – Project Structure 進入,添加Lib鲜锚,按下圖操作完畢后突诬,點擊apply – ok

文件樹的外部庫會出現(xiàn)以下三個:分別是java、spark芜繁、scala【重點強調(diào)唷~ 三者必備旺隙,其他隨意】



3. 編寫程序

新建一個scala文件SparkDemo.scala,代碼如下:

package demo

importorg.apache.spark._

objectSparkDemo{

? def main(args: Array[String]): Unit = {

? ? ? ? val masterUrl = "local[1]"

? ? ? ? val sparkconf = newSparkConf().setAppName("helenApp").setMaster(masterUrl)

? ? ? ? //spark配置骏令,建議保留setMaster(local)

? ? ? ? //調(diào)試的時候需要蔬捷,在實際集群上跑的時候可在命令行自定義

? ? ? ? val sc = new SparkContext(sparkconf)


? ? ? ? val rdd=sc.parallelize(List(1,2,3,4,5,6)).map(_*3)? //將數(shù)組(1,2,3,4,5,6)分別乘3

? ? ? rdd.filter(_>10).collect().foreach(println)? //打印大于10的數(shù)字

? ? ? ? println(rdd.reduce(_+_))? //打印 和

? ? ? ? println("hello world")? // demo必備的一句代碼!!! [認真臉]

? }

}

此時,scala編輯界面可能出現(xiàn)這句話榔袋,點擊setup scala SDK就可以了周拐。

依賴庫添加成功的檢驗標準是,import org.apache.spark._不報錯凰兑。

點擊綠色三角形妥粟,run~

在console界面正常輸出!(*^__^*)



4. 打包jar包

依舊是從老朋友File–Project Structure 進入吏够,在Artifacts下添加jar勾给。


注意:打包的jar包不需要把spark源碼也搞進去的,因為集群上本身就有spark代碼稿饰,所以就留下以下這兩個文件即可~~~ 點擊apply –ok


在主界面锦秒,Build—Build Artifacts。開始編譯~~~ 編譯OK后會多出一個out目錄喉镰,里面有最終jar包


查看主類旅择,MANIFEST.MF文件內(nèi)容如下:

Manifest-Version:1.0

Main-Class:demo.SparkDemo


5. 集群上運行jar包

Jar包放到/home/hadoop目錄下

>>spark-submit? --class demo.SparkDemo--master spark://:7077 project_name.jar

說明:--class <主類名> 最后跟的參數(shù)是我們的jar包。--master指定了集群master侣姆,中間還可以自定義一些spark配置參數(shù)生真,例如:

--num-executors 100 \

? ? ? --executor-memory6G \

? ? ? --executor-cores4 \

? ? ? --driver-memory1G \

? ? ? --confspark.default.parallelism=1000 \

? ? ? --confspark.storage.memoryFraction=0.5 \

? ? ? --confspark.shuffle.memoryFraction=0.3 \


集群上運行成功~~~



總結(jié)

其實看了很多什么maven工程沉噩、scala工程構(gòu)建方法,其實大同小異柱蟀,重點無非是java川蒙、spark、scala的依賴搞好长已,這才是核心問題畜眨。

注意版本一致性,包括:

· 開發(fā)機和集群的spark源碼版本一致

· 開發(fā)IDE中scala插件和系統(tǒng)安裝的scala和集群上scala版本一致

· scala 和spark 版本匹配术瓮。(spark2.x 相比 1.x 有很多不同康聂,請使用scala 2.11+版本)


===================分割線=======================

踩過的坑 ~~~ (??д?)b,歡迎小伙伴們和我分享遇到的問題 (*^__^*) ~~~

錯誤集錦

出錯情況:

命令行運行scala時胞四,找不到或無法加載主類scala.tools.nsc.MainGenericRunner

出錯原因:

scala安裝目錄出現(xiàn)了空格恬汁。

問題解決:

將Scala 移動到?jīng)]有空格的文件夾下。重新設(shè)置SCALA_HOME辜伟。文件解決氓侧。


出錯情況:

編寫程序時,調(diào)用rdd.saveAsTextFile 報錯NullPointerException

出錯原因:

和hadoop文件輸出配置有關(guān)导狡,下個補丁约巷,配置一下即可

解決方法:

1)下載文件winutils.exe

2) 將此文件放置在某個目錄下,比如D:\hadoop\bin\中烘豌。

3)在scala程序的一開始聲明:System.setProperty("hadoop.home.dir","D:\\hadoop\\")


出錯情況:

maven初始化工程時载庭,連接https://repo.maven.apache.org/maven2超時失敗

出錯原因:

PC網(wǎng)絡(luò)自身的問題看彼。不能訪問外網(wǎng)廊佩。

解決方法:

使用maven離線模式,手動把依賴庫導(dǎo)入 <用戶目錄>\\.m\\ repository

Q:什么時候需要maven離線模式呢靖榕?

A:沒有網(wǎng)絡(luò)标锄,只有本地庫,又是用maven來管理項目茁计,在編譯或者下載第三方Jar的時候料皇,老是去中央倉庫上自動下載,導(dǎo)致出問題星压。

1)? ? 全局設(shè)置Work offline 如下圖所示

2)? ? 編輯 <用戶目錄>\\.m\\ settings.xml践剂,寫一行:<offline> true</offline>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市娜膘,隨后出現(xiàn)的幾起案子逊脯,更是在濱河造成了極大的恐慌,老刑警劉巖竣贪,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件军洼,死亡現(xiàn)場離奇詭異巩螃,居然都是意外死亡,警方通過查閱死者的電腦和手機匕争,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門避乏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人甘桑,你說我怎么就攤上這事拍皮。” “怎么了跑杭?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵春缕,是天一觀的道長。 經(jīng)常有香客問我艘蹋,道長锄贼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任女阀,我火速辦了婚禮宅荤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浸策。我一直安慰自己冯键,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布庸汗。 她就那樣靜靜地躺著惫确,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚯舱。 梳的紋絲不亂的頭發(fā)上改化,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音枉昏,去河邊找鬼陈肛。 笑死,一個胖子當(dāng)著我的面吹牛兄裂,可吹牛的內(nèi)容都是我干的句旱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼晰奖,長吁一口氣:“原來是場噩夢啊……” “哼谈撒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起匾南,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤啃匿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后午衰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體立宜,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡冒萄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了橙数。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尊流。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖灯帮,靈堂內(nèi)的尸體忽然破棺而出崖技,到底是詐尸還是另有隱情,我是刑警寧澤钟哥,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布迎献,位于F島的核電站,受9級特大地震影響腻贰,放射性物質(zhì)發(fā)生泄漏吁恍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一播演、第九天 我趴在偏房一處隱蔽的房頂上張望冀瓦。 院中可真熱鬧,春花似錦写烤、人聲如沸翼闽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽感局。三九已至,卻和暖如春暂衡,著一層夾襖步出監(jiān)牢的瞬間询微,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工古徒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拓提,地道東北人读恃。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓隧膘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寺惫。 傳聞我的和親對象是個殘疾皇子疹吃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353