1. 程式人生 > >spark開發環境搭建(基於idea 和maven)

spark開發環境搭建(基於idea 和maven)

轉載

文章出自:http://blog.csdn.net/u012373815/article/details/53266301

使用idea構建maven 管理的spark專案 ,預設已經裝好了idea 和Scala,mac安裝Scala 

那麼使用idea 新建maven 管理的spark 專案有以下幾步:
  • scala外掛的安裝
  • 全域性JDK和Library的設定
  • 配置全域性的Scala SDK
  • 新建maven專案
  • 屬於你的”Hello World!”
  • 匯入spark依賴
  • 編寫sprak程式碼
  • 打包在spark上執行

1.scala外掛的安裝

首先在歡迎介面點選Configure,選擇plugins如下圖所示:


因為的安裝過了所以事uninstall 沒有安裝的話是 install ,安裝成功後,點選OK退出。



注意:外掛安裝完了之後,記得重啟一下IntelliJ IDEA使得外掛能夠生效。

2.全域性JDK和Library的設定

為了不用每次都去配置JDK,這裡先進行一次全域性配置。首先在歡迎介面點選Configure,然後在Project Defaults的下拉選單中選擇Project Structure,如下圖所示:

在開啟的Default Project Structure介面的左側邊欄選擇Project,在右側開啟的頁面中建立一個新的JDK選項(一定要本機已經安裝過JDK了),如下圖所示步驟在下拉選單中點選JDK後,在開啟的對話方塊中選擇你所安裝JDK的位置,注意是JDK安裝的根目錄,就是JAVA_HOME中設定的目錄。



3.配置全域性的Scala SDK

在歡迎頁面的右下角點選Configure,然後在Project Defaults的下拉選單中選擇Project Structure,在開啟的頁面左側選擇Global Libraries,然後在中間一欄中有一個綠色的加號標誌 +,點選後在下拉選單中選擇 Scala SDK

然後在開啟的對話方塊中選擇系統本身所安裝的Scala(即System對應的版本),點選OK確定,這時候會在中間一欄位置處出現Scala的SDK,在其上右鍵點選後選擇Copy to Project Libraries…,這個操作是為了將Scala SDK新增到專案的預設Library中去。整個流程如下面的動圖所示。



4.新建maven專案

在歡迎介面點選Create New Project,在開啟的頁面左側邊欄中,選擇Maven,然後在右側的Project SDK一項中,檢視是否是正確的JDK配置項正常來說這一欄會自動填充的,因為我們之前在1.3中已經配置過了全域性的Project JDK了,如果這裡沒有正常顯示JDK的話,可以點選右側的New…按鈕,然後指定JDK安裝路徑的根目錄即可),然後點選Next,來到Maven專案最重要三個引數的設定頁面,這三個引數分別為:GroupId, ArtifactId和Version. 步驟如下圖所示:

5.屬於你的”Hello World!”

在上一步中,我們已經建立了一個Maven工程

  1. 為了讓你的首次體驗Scala更清爽一些,將一些暫時無關的檔案和資料夾都勇敢的刪除掉吧,主要有 main\java, main\resources 和 test 這三個;

     2. 將Scala的框架新增到這個專案中,方法是在左側欄中的專案名稱上右鍵選單中點選Add Framework Support…,然後在開啟的對話方塊左側邊欄中,勾選Scala前面的複選框,然後點選確定即可(前提是上文中所述步驟都已正確走通,否則你很有可能看不到Scala這個選項的);

    3. 在main資料夾中建立一個名為 scala 的資料夾,並右鍵點選 scala 資料夾,選擇 Make Directory as,然後選擇Sources Root ,這裡主要意思是將 scala 資料夾標記為一個原始檔的根目錄,然後在其內的所有程式碼中的 package ,其路徑就從這個根目錄下開始算起。

   4. 在已經標記好為原始檔根目錄的 scala 資料夾 上,右鍵選擇 New,然後選擇 Scala Class,隨後設定好程式的名稱,並且記得將其設定為一個 Object(類似於Java中含有靜態成員的靜態類),正常的話,將會開啟這個 Object 程式碼介面,並且可以看到IntelliJ IDEA自動添加了一些最基本的資訊;

   5. 在建立的 Object 中輸入如下語句:

def main(args: Array[String]):Unit = {println("Hello World!")}

在程式介面的任意位置,右鍵單擊後選擇 Run '你的程式名稱',靜待程式的編譯和執行,然後在下方自動開啟的視窗中,你就可以看到振奮人心的 Hello World!了。

流程動圖如下: 


6. 匯入spark依賴

此時你已經可以成功的執行一個Scala 專案了。想要執行在spark 上則還需要匯入相關依賴。開啟pom.xml檔案新增如下依賴。

注意:是新增如下依賴;spark 和Scala的版本是對應的。

<properties>
        <spark.version>2.0.2</spark.version>
        <scala.version>2.11</scala.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <version>2.15.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>

    </build>

匯入依賴以後記得點選,這個引入jar 包哦


7. 編寫sprak程式碼

依賴新增成功後,新建scala 的object 檔案然後填寫如下程式碼

//本案例是新建一個int 型的List陣列,對陣列中的每個元素乘以3 ,再過濾出來陣列中大於10 的元素,然後對陣列求和。

import org.apache.spark.{SparkConf, SparkContext}
/**
  * Created by yangyibo on 16/11/21.
  */
object MySpark {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("mySpark")
    //setMaster("local") 本機的spark就用local,遠端的就寫ip
    //如果是打成jar包執行則需要去掉 setMaster("local")因為在引數中會指定。
        conf.setMaster("local")
    val sc =new SparkContext(conf)
    val rdd =sc.parallelize(List(1,2,3,4,5,6)).map(_*3)
    val mappedRDD=rdd.filter(_>10).collect()
    //對集合求和
    println(rdd.reduce(_+_))
    //輸出大於10的元素
    for(arg <- mappedRDD)
      print(arg+" ")
    println()
    println("math is work")
  }
}

程式碼編寫好以後,右鍵 run ‘mySpark’ 執行。


執行結果如下:


8. 打包執行

執行成功後,可以講程式碼打包成jar 包傳送到遠端或者本地的spark 叢集上執行。打包有以下步驟

點選“File“然後選擇“project Structure“

然後如圖所示進行如下操作 


在彈出的對話方塊中點選按鈕,選擇主類進行如下4步操作。


由於我們的jar包實在spark 上執行的,所可以刪除其他不需要的依賴包,如下圖所示,刪除其他不需要的包,只留下紅色矩形中的兩個。

注意:output directory 的路徑。此處是你匯出 jar 的路徑。


執行 bulid 構建你的jar


jar 包匯出以後就可以在spark上運行了。

此時進入終端,進入到spark安裝包的 bin 目錄下。執行如下命令

MySpark :是啟動類的名字,如果有包命,要加包名,(例如 com.edu.MySpark)

spark1:7077 : 是你遠端的spark 的地址 ,(可以是 //192.168.200.66:7077) 寫spark1 是因為我在/etc/hosts 中配置了環境引數,至於hosts 怎麼配,請自行百度。

/Users/yangyibo/Idea/mySpark/out/artifacts/mySpark_jar/mySpark.jar: 是你jar 包的路徑。

./bin/spark-submit--classMySpark--masterspark://spark1:7077/Users/yangyibo/Idea/mySpark/out/artifacts/mySpark_jar/mySpark.jar