Scala-Spark環境搭建配置

開始搭建的jdk這些自沒必要說,本文只是簡單的介紹安裝scala/spark html

1.下載scala安裝包 java

去官網下載tgz包,解壓在/opt/scala/下,設置環境變量: sql

export SCALA_HOME=/opt/scala/scala-2.10.3
export PATH=$SCALA_HOME/bin:$PATH

設置完成後,就能夠了,在命令行裏測試安裝是否正確:#scala    會進入相似於Mysql的命令輸入模式,就說明已經安裝成功了。(我以前下載的是rpm包,可是經過rpm命令安裝後,使用的是默認安裝,都不知道安裝在哪裏了,若是不熟的同窗建議仍是經過解壓的方式,這樣咱們能夠很好的設置環境變量什麼的) shell

rpm卸載已安裝的包:rpm -e test app_name 先看有沒有依賴等錯誤提示,若是沒有的話,能夠放心的使用:rpm -e app_name刪除了。 apache


scala下載地址:http://www.scala-lang.org/download/2.10.3.html api

2.下載spark安裝包 app

依然是下載tgz包到:/opt/spark/ 下,而後進行配置。配置文件:/conf/spark-env.sh(這個文件原本沒有,須要把spark-env.sh.template名字改爲這個)。 oop

目前spark環境不依賴Hadoop,也就不須要Mesos,因此配置的東西不多,配置信息詳見:http://spark.incubator.apache.org/docs/latest/configuration.html 這個頁面的最下解釋區。 測試

個人配置信息: ui

export SCALA_HOME=/opt/scala-2.10.3
export JAVA_HOME=/usr/java/jdk1.7.0_17

配置好了以後,好像也就能夠了。根據官網的「Quick Start」,咱們就快速體驗下吧!

-------------------------------------------------------------------------------------------

1.built Spark

sbt/sbt assembly  #使用此命令須要在工程目錄的home下

命令完成後,就會下載插件或jar包,效果以下:

SBT是Simple Build Tool的簡稱,若是讀者使用過Maven,那麼能夠簡單將SBT看作是Scala世界的Maven,雖然兩者各有優劣,但完成的工做基本是相似的。

上面的命令:sbt assembly 愚下認爲是使用的sbt-assembly插件,這個插件的目的是:

  • 能夠將當前項目的二進制包以及依賴的全部第三方庫都打包成一個jar包發佈,即one-jar, 對於那種直接運行的應用程序很方便

通過此命令編譯後的結果是:

[info]部分說得挺清楚,就是編譯後的jar文件在:/opt/spark/spark-0.9.0-incubating/assembly/target/scala-2.10/spark-assembly-0.9.0-incubating-hadoop1.0.4.jar

將這個文件添加到CLASSPATH(位置應該是在conf/spark-env.sh中加入,參考本文最下面的一張參考配置圖),就能夠建立Spark應用(固然經過>[bin]#./spark-shell命令進入的是Scala解釋器環境,因此須要編譯。)

在解釋器環境下測試Spark:(Spark交互模式

scala> var data=Array(1,2,3,4,5,6)
data: Array[Int] = Array(1, 2, 3, 4, 5, 6)

scala> val distData = sc.parallelize(data)
distData: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:14

scala> distData.reduce(_+_)
14/02/28 18:15:54 INFO SparkContext: Starting job: reduce at <console>:17
14/02/28 18:15:54 INFO DAGScheduler: Got job 0 (reduce at <console>:17) with 1 output partitions (allowLocal=false)
14/02/28 18:15:54 INFO DAGScheduler: Final stage: Stage 0 (reduce at <console>:17)
14/02/28 18:15:54 INFO DAGScheduler: Parents of final stage: List()
14/02/28 18:15:54 INFO DAGScheduler: Missing parents: List()
14/02/28 18:15:54 INFO DAGScheduler: Submitting Stage 0 (ParallelCollectionRDD[0] at parallelize at <console>:14), which has no missing parents
14/02/28 18:15:55 INFO DAGScheduler: Submitting 1 missing tasks from Stage 0 (ParallelCollectionRDD[0] at parallelize at <console>:14)
14/02/28 18:15:55 INFO TaskSchedulerImpl: Adding task set 0.0 with 1 tasks
14/02/28 18:16:00 INFO TaskSetManager: Starting task 0.0:0 as TID 0 on executor localhost: localhost (PROCESS_LOCAL)
14/02/28 18:16:00 INFO TaskSetManager: Serialized task 0.0:0 as 1077 bytes in 88 ms
14/02/28 18:16:01 INFO Executor: Running task ID 0
14/02/28 18:16:02 INFO Executor: Serialized size of result for 0 is 641
14/02/28 18:16:02 INFO Executor: Sending result for 0 directly to driver
14/02/28 18:16:02 INFO Executor: Finished task ID 0
14/02/28 18:16:02 INFO TaskSetManager: Finished TID 0 in 6049 ms on localhost (progress: 0/1)
14/02/28 18:16:02 INFO DAGScheduler: Completed ResultTask(0, 0)
14/02/28 18:16:02 INFO DAGScheduler: Stage 0 (reduce at <console>:17) finished in 6.167 s
14/02/28 18:16:02 INFO TaskSchedulerImpl: Remove TaskSet 0.0 from pool 
14/02/28 18:16:02 INFO SparkContext: Job finished: reduce at <console>:17, took 7.928379191 s
res0: Int = 21

在Eclipse下開發Spark:

將經過sbt/sbt assembly編譯生成的/opt/spark/spark-0.9.0-incubating/assembly/target/scala-2.10/spark-assembly-0.9.0-incubating-hadoop1.0.4.jar 導出,做爲建立Scala工程項目時須要的jar引入,就好了(我編譯後的jar大小爲:83.8 MB (87,878,749 字節))

示例:

(1)工程

(2)代碼[代碼不報錯就說明沒問題了~]

當咱們在Eclipse上寫完代碼後,經過Eclipse導出爲jar文件,而後編寫個shell腳本,就能夠在Spark中執行了。



其餘Spark環境設置參考:


說明:最後的方法仍是去看官網教程!

quick start :  http://spark.incubator.apache.org/docs/latest/quick-start.html

configuration : http://spark.incubator.apache.org/docs/latest/configuration.html

推薦一篇針對之前版本的博客介紹,對新的也有必定的參考價值:

http://www.cnblogs.com/jerrylead/archive/2012/08/13/2636115.html

Spark 開發API:

http://spark.incubator.apache.org/docs/latest/api/core/index.html#org.apache.spark.rdd.RDD

相關文章
相關標籤/搜索