最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

使用IDEA開發(fā)Spark應(yīng)用

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 13:05:21
文檔

使用IDEA開發(fā)Spark應(yīng)用

使用IDEA開發(fā)Spark應(yīng)用:IDEA 全稱IntelliJ IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,尤其在智能代碼助手、代碼自動(dòng)提示、重構(gòu)、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創(chuàng)新的GUI設(shè)計(jì)等方面的功能都非常棒,而且IDEA是目前Scal
推薦度:
導(dǎo)讀使用IDEA開發(fā)Spark應(yīng)用:IDEA 全稱IntelliJ IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,尤其在智能代碼助手、代碼自動(dòng)提示、重構(gòu)、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創(chuàng)新的GUI設(shè)計(jì)等方面的功能都非常棒,而且IDEA是目前Scal

IDEA 全稱IntelliJ IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,尤其在智能代碼助手、代碼自動(dòng)提示、重構(gòu)、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創(chuàng)新的GUI設(shè)計(jì)等方面的功能都非常棒,而且IDEA是目前Scala支持最

IDEA 全稱IntelliJ IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,尤其在智能代碼助手、代碼自動(dòng)提示、重構(gòu)、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創(chuàng)新的GUI設(shè)計(jì)等方面的功能都非常棒,而且IDEA是目前Scala支持最好的IDE。IDEA分ultimate和free edition版,ultimate提供了J2EE等很多非常強(qiáng)力的功能,free edition我覺得已經(jīng)對于我這樣的初學(xué)者已經(jīng)夠用了。前面寫過一篇配置IntelliJ IDEA 13的SBT和Scala開發(fā)環(huán)境,本文在這個(gè)基礎(chǔ)上使用IDEA進(jìn)行Spark應(yīng)用的配置和開發(fā)。

1. IDEA環(huán)境配置

(1). 首先在IntellJ/bin/idea64.exe.vmoptions(對應(yīng)64位大內(nèi)存系統(tǒng)),加大IDEA的啟動(dòng)內(nèi)存:

-Xms512m
-Xmx1024m
-XX:MaxPermSize=512m

(2). 在IDEA中,Project相當(dāng)于eclipse中的workspace,同一IDEA窗口只能打開一個(gè)workspace。而IDEA中的module等同于eclipse中的project,所以通過File – New Module來為當(dāng)前Project創(chuàng)建一個(gè)module。
1
(3). IDEA會(huì)生成大量的緩存文件,來于保存配置信息、插件和項(xiàng)目索引文件等。,一般都會(huì)有代碼的十倍大小左右大小。在Windows下目錄為C:\Users\THINKP\.IntelliJIdea13,使用File – Invalidate Caches可以校驗(yàn)索引的有效性并在需要的時(shí)候重建。IDEA會(huì)經(jīng)常讀寫這些緩存文件,所以使用SSD來存儲(chǔ)緩存文件會(huì)提高不少性能。下面是修改緩存文件路徑的方法:
a). 關(guān)閉IDEA
b). 將cache目錄復(fù)制到對應(yīng)的目錄下面。
c). 打開IntelliJ IDEA 13.1.3\bin\idea.properties文件,例如將IDEA轉(zhuǎn)移到目錄D:\Program Files\.IntelliJIdea13中,只需要修改
idea.config.path=D:/Program Files/.IntelliJIdea13/config
idea.system.path=D:/Program Files/.IntelliJIdea13/system
(4). 主題和顏色
Settings – IDE Settings – Appearance – Theme:Darcula
然后把下面override font選項(xiàng)勾上,選擇Yahei 14號字體。
然后重啟IDEA,界面變成了灰黑色風(fēng)格,瞬間順眼了很多!
2
編輯器可以設(shè)置單獨(dú)的主題,當(dāng)前面設(shè)置了全局主題時(shí),編輯器的主題也會(huì)被修改。接下來,編輯器界面字體有點(diǎn)小,可以在Editor – Colors&Fonts – Fonts另存為一個(gè)新的主題,并在這個(gè)新主題中修改配置。我的屏幕分辨率有點(diǎn)大,所以設(shè)置了15號字體。
3
光標(biāo)所在行背景顏色
Editor – Colors&Fonts – General – Caret row,選擇了藍(lán)色背景,這樣就有了較大的色差。
4
(5). 常用快捷鍵
界面中的Alt+1 project窗口
Alt+7 代碼結(jié)構(gòu)圖
Alt+2 Favorite
F11打書簽,再按一次取消。此時(shí)Favorite - Bookmark里就有這一項(xiàng)。
TODO list Alt+6
注釋中以TODO開頭時(shí),該TODO項(xiàng)就可以在TODO標(biāo)簽頁中找到。這樣在有一些思路但是來不及做時(shí),可以以TODO的形式寫注釋
5
同步項(xiàng)目(Detect all externally changed files and reload them from disk)Ctrl+Y
保存(Save all) Ctrl+S
undo Ctrl+Z
redo Ctrl+Shift+Y
剪切 Ctrl+X
復(fù)制 Ctrl+C
粘貼 Ctrl+V
查找 Ctrl+F
替換 Ctrl+R
光標(biāo)的上一個(gè)位置(undo navigation) Ctrl+Alt+<-
光標(biāo)的下一個(gè)位置(redo navigation) Ctrl+Alt+->
make Ctrl+F9
(6). 項(xiàng)目文件設(shè)定
行分割模式: File - Separators 選擇Windows風(fēng)格(/r/n), UNIX的風(fēng)格(/n)或者mac風(fēng)格(/r)等等。
將文件鎖定編輯 - File - Make file read only
文件編碼設(shè)置 Project Settings - File Encodings
推薦YouMeek IDEA教程,我認(rèn)為是目前詳細(xì)的IDEA教程之一。
http://www.youmeek.com/category/software-system/my-intellij-idea/

2. 使用IDEA開發(fā)Spark程序并運(yùn)行

首先編輯build.sbt文件,每個(gè)配置項(xiàng)都要有一個(gè)空格來分割。

build.sbt
name := "sbtTest"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" %% "spark-core_2.10" % "1.0.2"
libraryDependencies += "org.apache.spark" % "spark-bagel_2.10" % "1.0.2"
libraryDependencies += "org.apache.spark" % "spark-mllib_2.10" % "1.0.2"
libraryDependencies += "org.apache.spark" % "spark-graphx_2.10" % "1.0.2"
libraryDependencies += "org.apache.spark" % "spark-streaming_2.10" % "1.0.2"

打開SBT,可以觀察到SBT正在downloading dependencies。

...
[info] downloading http://repo1.maven.org/maven2/org/apache/spark/spark-bagel_2.10/1.0.2/spark-bagel_2.10-1.0.2.jar ...
[info] 	[SUCCESSFUL ] org.apache.spark#spark-bagel_2.10;1.0.2!spark-bagel_2.10.jar (5672ms)
[info] downloading http://repo1.maven.org/maven2/org/apache/spark/spark-mllib_2.10/1.0.2/spark-mllib_2.10-1.0.2.jar ...
[info] 	[SUCCESSFUL ] org.apache.spark#spark-mllib_2.10;1.0.2!spark-mllib_2.10.jar (7351ms)
[info] downloading http://repo1.maven.org/maven2/org/apache/spark/spark-graphx_2.10/1.0.2/spark-graphx_2.10-1.0.2.jar ...
[info] 	[SUCCESSFUL ] org.apache.spark#spark-graphx_2.10;1.0.2!spark-graphx_2.10.jar (6349ms)
...
...

編寫代碼,這段代碼用于處理web前端日志,其中第二列是session的ID,輸出Session訪問次數(shù)的排名。

/**
 * Created by Debugo on 2014/8/25.
 */
import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.SparkContext._
object LogAnalyzer {
 def main(args:Array[String]): Unit ={
 if(args.length!=2) {
 System.err.println("Usage: LogAnalyzer ")
 System.exit(1)
 }
 val conf = new SparkConf().setAppName("LogAnalyzer")
 val sc = new SparkContext(conf)
 // args(0)=file:///root/access_log/access_log.20080601.decode.filter
 // args(1)=file:///root/access_log/result
 sc.textFile(args(0)).map(_.split("\t| ")).filter(_.length==6).
 map(x=>(x(1),1)).reduceByKey(_+_).map(x=>(x._2,x._1)).
 sortByKey(false).map(x=>(x._2,x._1)).saveAsTextFile(args(1))
 sc.stop()
 }
}

在sbt命令行中中compile&package

> compile
[info] Compiling 1 Scala source to C:\Users\Administrator\IdeaProjects\Spark0\target\scala-2.10\classes...
[success] Total time: 5 s, completed 2014-8-25 16:05:20
> package
[info] Packaging C:\Users\Administrator\IdeaProjects\Spark0\target\scala-2.10\spark0_2.10-1.0.jar ...
[info] Done packaging.
[success] Total time: 0 s, completed 2014-8-25 16:17:12

將jar上傳到配置spark運(yùn)行庫的節(jié)點(diǎn),提交job,spark會(huì)創(chuàng)建結(jié)果輸出的result目錄。最終RDD被分割成了5個(gè)分區(qū)。

spark-submit --master spark://debugo:7077 --class LogAnalyzer --executor-memory=10g /root/spark0_2.10-1.0.jar file:///root/access_log/access_log.20080601.decode.filter file:///root/access_log/result
...
$ ll /root/access_log/result
total 10840
-rw-r--r-- 1 root root 2708325 Aug 25 15:58 part-00000
-rw-r--r-- 1 root root 1114214 Aug 25 15:58 part-00001
-rw-r--r-- 1 root root 2239113 Aug 25 15:58 part-00002
-rw-r--r-- 1 root root 0 Aug 25 15:58 part-00003
-rw-r--r-- 1 root root 5028580 Aug 25 15:58 part-00004
-rw-r--r-- 1 root root 0 Aug 25 15:58 _SUCCESS
$ more part-00000
(11579135515147154,431)
(6383499980790535,385)
(7822241147182134,370)
(900755558064074,335)
(12385969593715146,226)
...

得到了我們想要的按session ID的排名結(jié)果。
^^

參考:

Spark Programming Guide
mmicky Spark大數(shù)據(jù)快速計(jì)算平臺

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

使用IDEA開發(fā)Spark應(yīng)用

使用IDEA開發(fā)Spark應(yīng)用:IDEA 全稱IntelliJ IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,尤其在智能代碼助手、代碼自動(dòng)提示、重構(gòu)、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創(chuàng)新的GUI設(shè)計(jì)等方面的功能都非常棒,而且IDEA是目前Scal
推薦度:
標(biāo)簽: 使用 in 應(yīng)用
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top