Intellij Idea搭建Spark开发环境
在Spark快速入門指南 – Spark安裝與基礎(chǔ)使用中介紹了Spark的安裝與配置,在那里還介紹了使用spark-submit提交應(yīng)用,不過不能使用vim來開發(fā)Spark應(yīng)用,放著IDE的方便不用。這里介紹使用Intellij Idea搭建Spark的開發(fā)環(huán)境。
1、Intellij Idea的安裝
由于Spark安裝在Ubuntu環(huán)境中,這里的Idea也安裝在Ubuntu中。首先是下載,到官網(wǎng)下載即可。下載完后解壓到待安裝的目錄:
sudo tar -zxvf ideaIU-2016.1.tar.gz -C /usr/local/我解壓在了/usr/local目錄下,然后更改文件夾名: mv ideaIU-2016.1 idea然后修改文件的用戶和用戶組: sudo chown -R hadoop:hadoop idea這里的hadoop是我的用戶名和組名。這樣idea就安裝成功了。
為了啟動idea,進入idea/bin目錄,執(zhí)行里面的idea.sh:
bin/idea.sh這樣就可以啟動idea。不過這樣不方便,可以在桌面新建文件idea.desktop,輸入如下內(nèi)容: [Desktop Entry] Name=IdeaIU Comment=Rayn-IDEA-IU Exec=/usr/local/idea/bin/idea.sh Icon=/usr/local/idea/bin/idea.png Terminal=false Type=Application Categories=Developer;這樣就創(chuàng)建了一個桌面快捷方式。2、maven的安裝與配置
Maven 是一個項目管理和構(gòu)建自動化工具。作為一個程序員,都有過為了使用某個功能而在項目中添加jar包的經(jīng)歷,使用的框架多了,需要添加的jar包也多,而maven能夠自動為我們添加需要的jar包。首先在maven官網(wǎng)上下載maven:
下載之后在Downloads目錄下有如下文件:
liu@Binja:~/Downloads$ ls apache-maven-3.3.9-bin.tar.gz解壓到待安裝的目錄:
liu@Binja:~/Downloads$ sudo tar -zxvf apache-maven-3.3.9-bin.tar.gz -C /usr/local/同樣,修改文件夾名和用戶名:
liu@Binja:/usr/local$ sudo mv apache-maven-3.3.9/ maven liu@Binja:/usr/local$ sudo chown -R liu:liu maven liu@Binja:/usr/local$ ll maven total 52 drwxr-xr-x 6 liu liu 4096 3月 28 20:24 ./ drwxr-xr-x 12 root root 4096 3月 28 20:26 ../ drwxr-xr-x 2 liu liu 4096 3月 28 20:24 bin/ drwxr-xr-x 2 liu liu 4096 3月 28 20:24 boot/ drwxr-xr-x 3 liu liu 4096 11月 11 00:38 conf/ drwxr-xr-x 3 liu liu 4096 3月 28 20:24 lib/ -rw-r--r-- 1 liu liu 19335 11月 11 00:44 LICENSE -rw-r--r-- 1 liu liu 182 11月 11 00:44 NOTICE -rw-r--r-- 1 liu liu 2541 11月 11 00:38 README.txt liu@Binja:/usr/local$ 然后將maven添加到環(huán)境變量中: sudo vim ~/.bashrc在最后添加下面的內(nèi)容:
export PATH=$PATH:/usr/local/maven/bin
使更改生效:
liu@Binja:/usr/local$ source ~/.bashrc這樣maven就安裝好了。3、用剛安裝的maven配置idea
起始idea自帶了maven,這里配置自己安裝的maven。
一次選擇File->Setting->Build,Execution,Deployment->Build Tools->Maven,如下圖:
在右側(cè)里的Maven home directory里設(shè)置Maven的安裝目錄,就我這里是/usr/local/maven,在User settings file里設(shè)置Mavne的配置文件,我這里使用默認(rèn)的文件,在Local repository里設(shè)置本地包的管理倉庫,選擇右側(cè)的Override后,可以自定義自己的倉庫目錄,以后Maven自動下載的包就會存放在這里。
單擊OK后maven就配置完了。然后就可以創(chuàng)建一個maven項目。
4、創(chuàng)建maven項目
依次選擇File->New->New Project,出現(xiàn)如下界面:
左側(cè)可以選擇項目的類型,這里選擇Maven,右側(cè)可以選擇是否使用模板,勾選上面的Create from archetype后,就可以在下面選擇項目模板,這里選擇Scala的模板。
一路next之后,這里填一下groupID和artifactID,名字隨便取:
然后一路next,填寫上項目的名字,OK就可以了。
這樣新項目就創(chuàng)建成功了,新項目的文件結(jié)構(gòu)如下圖:
其中的pom.xml就是配置我們項目的依賴包的。src是項目存放代碼的目錄,下面有兩個結(jié)構(gòu)相同的目錄main和test,其中我們在main目錄下編寫代碼,test編寫測試代碼,這里先不使用測試,可以將test目錄刪除。右側(cè)展示的就是pom.xml文件的內(nèi)容:
勾選右上角的Enable Auto-Import,這樣Idea就會自動下載項目所需的依賴包。還要注意中間的Scala版本,選擇自己使用的版本。
在下圖中的dependencies標(biāo)簽下可以添加項目的依賴:
每一個依賴都在一個dependency標(biāo)簽下,其中包括groupID、artifactID和version。如果不知道依賴包的這些內(nèi)容的話,可以在這里進行查詢,查詢結(jié)果就有這些信息。比如要查詢spark的依賴,有如下的結(jié)果:
選擇要添加的依賴,進入后選擇相應(yīng)的版本號,下面就有maven需要的一些信息,同時還包括其它包管理工具的信息,比如sbt:
就可以復(fù)制到pom.xml文件中了。
maven會自動下載pom.xml中添加的依賴包,不用我們自己添加,省去了很多麻煩。
之后就可以寫代碼了,在src/main/scala/com/liu下新建Scala類,選擇類型為Object,填寫類名,就可以編寫代碼了。作為示例,這里是一個wordcount的例子:
package com.liu/*** Created by hadoop on 16-3-28.*/ import org.apache.spark.{SparkContext,SparkConf} object Test {def main(args:Array[String]): Unit ={val conf=new SparkConf()val sc=new SparkContext(conf)val text=sc.textFile("file:///usr/local/spark/README.md")val result=text.flatMap(_.split(' ')).map((_,1)).reduceByKey(_+_).collect()result.foreach(println)} }這里不介紹代碼的具體含義。代碼寫好后,需要生成jar包并提交到spark上運行。下面的步驟來生成jar包。依次選擇File->Project Structure->Artifacts,如下圖:
單擊中間的綠色加號,選擇JAR->from modules with dependencies,如下圖:
在Main Class中選擇項目的主要類,OK即可。結(jié)果如下:
中間的Output Layout會列出所有的依賴包,我們要提交到Spark上,所以不需要這里的Spark和Hadoop依賴包,刪除來節(jié)約空間,不過不要刪除最后的compile output,要不然就生不成jar包了。點擊OK完成配置。
之后選擇Build->Build Artifact->Build,就可以生成jar包了,結(jié)果如下圖:
上圖中多了一個out文件夾,下面有一個jar包,表明生成成功。
5、提交Spark應(yīng)用
生成了jar包后就可以使用spark-submit來提交應(yīng)用了,使用如下命令:
spark-submit --class "com.liu.Test" ~/SparkDemo.jar就可以提交應(yīng)用。結(jié)果如下:
表明運行成功,列出了單詞的計數(shù)統(tǒng)計。
至此,Spark的Idea開發(fā)環(huán)境搭建成功。
總結(jié)
以上是生活随笔為你收集整理的Intellij Idea搭建Spark开发环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀里的赵云这个英雄为什么也不能用金
- 下一篇: 10+ 最佳的 Node.js 教程和实