1. 程式人生 > >spark入門實戰windows本地測試程式

spark入門實戰windows本地測試程式

        在做Spark開發時,一般會在windows下進行Spark本地模式程式除錯,在本地除錯好了再打包執行在Spark叢集上。因此需要在windows上進行Spark開發配置。本文將給出三種開發工具的配置:1、使用eclipse java api開發;2、使用scala IDE開發;3、使用IntelliJ IDEA 開發。

1、windows下環境

在安裝開發軟體之前,首先需要安裝JAVA 和SCALA,並且配置好環境變數。

2、java開發spark程式

2)                     開啟eclipse軟體,建立maven專案:

點 擊 file ->new ->others ->maven project 點 擊 next ,

 選 擇maven-archetype-quickstart ,點選 next,

group id 為 com.dt.spark,artifact id 為sparkApps,

然後點選 finish。

3)                     修改JDK和pom檔案

建立 maven 專案後,預設的 jdk 是 1.5 要改成我們前面安裝好的 jdk1.8 。在專案上右擊 build path ->configure build path 。 在彈出頁面點選 Libraries,選中 jre system library 。點選 edit,在彈出框選擇 workspace default jre ,然後點選 finish。然

後在點選 ok。將 pom 檔案修改為如下內容,然後等待 eclipse 下載好 maven 依賴的 jar 包, 並編譯工程。 編譯好工程後有個錯誤提示, 在此錯誤列上, 右擊選擇 quick fix ,在彈出頁面點選 finish 即可。

4)                     Pom檔案內容(很重要):

<projectxmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.dt.spark</groupId>

<artifactId>SparkApps</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

<name>SparkApps</name>

<url>http://maven.apache.org</url>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-core_2.10</artifactId>

<version>1.6.0</version>

</dependency>

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-sql_2.10</artifactId>

<version>1.6.0</version>

</dependency>

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-hive_2.10</artifactId>

<version>1.6.0</version>

</dependency>

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-streaming_2.10</artifactId>

<version>1.6.0</version>

</dependency>

<dependency>

<groupId>org.apache.hadoop</groupId>

<artifactId>hadoop-client</artifactId>

<version>2.6.0</version>

</dependency>

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-streaming-kafka_2.10</artifactId>

<version>1.6.0</version>

</dependency>

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-graphx_2.10</artifactId>

<version>1.6.0</version>

</dependency>

</dependencies>

<build>

<sourceDirectory>src/main/java</sourceDirectory>

<testSourceDirectory>src/main/test</testSourceDirectory>

<plugins>

<plugin>

<artifactId>maven-assembly-plugin</artifactId>

<configuration>

<descriptorRefs>

<descriptorRef>jar-with-dependencies</descriptorRef>

</descriptorRefs>

<archive>

<manifest>

<maniClass></maniClass>

</manifest>

</archive>

</configuration>

<executions>

<execution>

<id>make-assembly</id>

<phase>package</phase>

<goals>

<goal>single</goal>

</goals>

</execution>

</executions>

</plugin>

<plugin>

<groupId>org.codehaus.mojo</groupId>

<artifactId>exec-maven-plugin</artifactId>

<version>1.3.1</version>

<executions>

<execution>

<goals>

<goal>exec</goal>

</goals>

</execution>

</executions>

<configuration>

<executable>java</executable>

<includeProjectDependencies>false</includeProjectDependencies>

<classpathScope>compile</classpathScope>

<mainClass>com.dt.spark.SparkApps.WordCount</mainClass>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<source>1.6</source>

<target>1.6</target>

</configuration>

</plugin>

</plugins>

</build>

</project>

         將內容編輯好了之後點選儲存,編譯器會自動下載spark程式執行所需要的所有依賴,這個階段下載時間比較長(時間跟網速有關)。

5)                     建立包和java 類

在包路徑 com.dt.spark.SparkApps 上 右擊 new ->package 在彈出頁面 name 中填寫 com.dt.spark.SparkApps.cores,點選 finish 的。在包路徑下 com.dt.spark.SparkApps.cores 上 右擊 new ->class ,在彈出視窗中name 中填寫 WordCount ,點選 finish。然後在 WordCount 中編寫如下程式碼。

6)                     程式碼詳細


         Ps:看不清楚可以把圖片放大看,這裡詳細說明了WordCount 的spark程式的每一步。

       按照上述的操作並完成程式執行時可能會出的異常:

A、  出現沒有找到hadoop的異常可以不用管,因為我們是在本地模式下除錯程式,不需要hadoop平臺也沒有hadoop環境,如程式除錯ok,打包後可以執行在spark叢集上。

B、 java.lang.IllegalArgumentException:System memory 259522560 must be at least 4.718592E8. Please use a larger heapsize.。這是JVM申請的memory不夠導致這個異常的處理方式: Window——Preference——Java——Installed JREs——選中一個Jre 後 Edit在DefaultVM arguments 里加入:-Xmx512M

3、IDE開發spark程式

直接下載最新版就可以了。

2)下載完成後解壓,然後直接找到eclipse.exe檔案點選開啟,注意:系統中必須要有java和scala環境。

3)新建工程:

New àscala project à輸入project nameà一直預設點選nextàfinsh。工程名字叫:WordCount

4)修改預設依賴的scala2.11.7版本為2.10.6(就是你windows下安裝的scala版本)

點選工程名WordConut右擊à點選propertiesàScala Compilesà選中Use Project Settingsà點選Scala Installationà選中Lastest 2.10 bundle(*)àApplyàok。

5)加入spark的jar依賴

首先在windows下下載spark-1.6.0-bin-hadoop2.6.tgz,解壓後找

到Spark-assembly-1.6.0-hadoop2.6.0.jar。然後在eclipse中加入這個jar

到libraries中。

6)新建package包和scala class 類(過程略)然後開始程式設計,程式如下:

   

以上就是通過scala對應的eclipse軟體開發的spark wordConut程式的詳細過程。在執行程式時出現的異常參考第2小節的異常處理方式。

4、IDEA開發spark程式

2)下載好之後,按照一般軟體的安裝方法進行正確安裝。

注意:當介面出現選擇外掛安裝的時候,需要安裝scala,點選Install,然後會下載安裝,這裡需要等待一會,時間看自己的網速。

3)安裝外掛完成後,點選Create New Project 新建工程,選擇ScalaàscalaàNextà輸入工程名,選擇JDK路徑,選擇Scala的SDK路徑àokà等待軟體自動建立索引。

4)點選FileàProject Structure設定工程的Libraries。核心是新增Spark的jar依賴。點選左上角的“+”選擇Spark-assem匯入bly-1.6.0-hadoop2.6.0.jar包。匯入過程中也需要等待一會。

5)建立package包和scala類,然後程式設計序。程式的內容和上一節中在Scala IDE編寫的程式完全一樣。

Ps:出現java.lang.IllegalArgumentException: System memory 259522560 must be at least4.718592E8. Please use a larger heap size.異常時,解決方案:設定應用程式的 VMoptions。IDEA的設定路徑在:Run àEdit ConfigurationsàApplication選擇對應的程式,設定VM options:-Xmx512M。