Spark學習: Spark-Scala-IntelliJ開發環境搭建和編譯Jar包流程

       使用scala編寫spark腳本的話,可以直接在spark-shell中運行,如果要提交整個腳本的話,就必須將scala腳本編譯成Jar包,然後通過spark-submit 提交Jar包給spark集羣,當需要重複利用腳本的話一般是需要編譯成Jar包的,所以後面會介紹下怎麼將scala編譯成Jar包,前面則會介紹下怎麼搭建spark-scala的開發環境,同時使用IntelliJ Idea編寫scala腳本。


一 環境搭建

平臺:Mac book 64位 OS X ver10.11.3 (windows和linux可借鑑,可能有點小區別)

依次安裝如下軟件:


1、Java

下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

任選一個即可,本文選用的版本

           JDK8ver 1.8都可以

 

將下載文件解壓即可,在控制檯輸入Java –version出現如下字樣安裝成功。

如果安裝了控制檯卻出不來以上結果,可按照第3步scala的環境配置操作一樣添加Java環境變量。

 

2、spark

下載地址:http://spark.apache.org/downloads.html

本文選用的版本

1.5.1(Oct 02 2015)

Pre-Built forHadoop 1.X

 

將下載文件解壓即可,pre-build已經事先編譯好了

 

3、Scala

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

本文選用的版本

           2.10.6(爲避免編譯錯誤,最好不要選取2.11以上的,存在衝突)

 

解壓到合適文件夾,記得將scala添加到環境變量裏,如下:

首先在控制檯輸入 open~/.bash_profile,添加如下文本:

# 根據自己的scala地址修改下添加

export SCALA_HOME=/Users/krzhou/software/scala-2.10.6

export PATH=$SCALA_HOME/bin:$PATH

 

添加完後在控制檯輸入 source ~/.bash_profile 重新讀入環境生效

 

 

4、IntelliJ IDEA

下載地址:https://www.jetbrains.com/idea/

選用free版本,按流程安裝即可,當到了需要選裝插件的環節,添加scala插件即可。

其中不激活的話就先選evaluate for free

在default plugins的時候默認即可,feature plugins的時候記得選scala插件安裝

 

 

 

二 構建項目

要使用Idea編寫spark腳本需要在scala項目中添加spark/scala的Jar包。

 

首先創建項目

點擊菜單欄File-New-project…-scala-scala,點擊next,修改參數如下:


Project SDK是java文件夾的lib,Scala SDK是scala文件夾的lib。

 

導入Jar包:

①     導入scala 包

點擊File-Project Structure-Libraries,點擊+號-scala SDK,添加scala文件夾裏lib裏的scala-compiler.jar/scala-library.jar/scala-reflect.jar(這一步貌似不是必須的,因爲前一步裏已經導入了scala的SDK了)

②     導入spark包

點擊+號-Java,添加spark文件夾lib裏的spark-assembly-1.5.1-hadoop1.2.1.Jar

 

 

 

 

創建腳本

右鍵SparkPi_Test裏的src, 創建Scala class

 


添加如下文本:(scala腳本):

<span style="font-size:14px;">/** Computes an approximation to pi*/
import scala.math.random

import org.apache.spark._

object SparkPi {
  defmain(args:Array[String]){
    valconf = newSparkConf().setAppName("Spark Pi").setMaster("local")
    valspark = newSparkContext(conf)
    valslices = if(args.length > 0) args(0).toInt else 2
    valn = math.min(100000L * slices,Int.MaxValue).toInt // avoid overflow
    valcount = spark.parallelize(1 until n, slices).map { i =>
      valx = random * 2 - 1
      valy = random * 2 - 1
      if(x*x + y*y < 1) 1 else0
    }.reduce(_+ _)
    println("Pi is roughly " + 4.0 * count / n)
    spark.stop()
  }</span><span id="transmark"></span>


點擊菜單欄的Run-run SparkPi運行,

出現如下結果表示運行成功,顯示Pi的值約爲3.14598

 

 


三 編譯Jar包

接下來將第二步編寫的項目編譯成可執行的Jar包。 

點擊File-project structure-Artifacts,點擊+號添加如下

 

輸入Main class名字SparkPi(跟運行的主程序名字保持一致),點擊ok


勾選所有的Extracted的Jar包,點擊—號去掉,並勾選build on make


點擊菜單欄build-build Artifacts-build,當左邊目錄下出現如下的SparkPi_Test.jar的jar包時,編譯成功。

 


最後在控制檯使用

/Users/krzhou/spark-hadoop/bin/spark-submit  SparkPi_Test.jar --class SparkPi

提交查看運行結果:


如圖:Pi is roughly 3.14828,運行成功。

 

 

以上只是介紹了一種編譯Jar包的方式,應該還有使用sbt等輔助工具的方式,暫時還不是很瞭解。

如果有不足的地方,歡迎一起討論!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章