分別用Eclipse和IDEA搭建Scala+Spark開發環境


開發機器上安裝jdk1.7.0_60和scala2.10.4,配置好相關環境變量。網上資料很多,安裝過程忽略。此外,Eclipse使用Luna4.4.1,IDEA使用14.0.2版本。

1. Eclipse開發環境搭建

1.1. 安裝scala插件

安裝eclipse-scala-plugin插件,下載地址http://scala-ide.org/download/prev-stable.html

clip_image002

解壓縮以后把plugins和features復制到eclipse目錄,重啟eclipse以后即可。

Window -> Open Perspective -> Other…,打開Scala,說明安裝成功。

clip_image004

1.2. 創建maven工程

打開File -> New -> Other…,選擇Maven Project:

clip_image005

點擊Next,輸入項目存放路徑:

clip_image007

點擊Next,選擇org.scala-tools.archetypes:

clip_image009

點擊Next,輸入artifact相關信息:

clip_image011

點擊Finish即可。默認創建好的工程目錄結構如下:

clip_image012

修改pom.xml文件:

clip_image013

至此,一個默認的scala工程新建完成。

2. Spark開發環境搭建

2.1. 安裝scala插件

開發機器使用的IDEA版本為IntelliJ IEDA 14.0.2。為了使IDEA支持scala開發,需要安裝scala插件,如圖:

clip_image015

插件安裝完成后,IntelliJ IDEA會要求重啟。

2.2. 創建maven工程

點擊Create New Project,在Project SDK選擇jdk安裝目錄(建議開發環境中的jdk版本與Spark集群上的jdk版本保持一致)。點擊左側的Maven,勾選Create from archetype,選擇org.scala-tools.archetypes:scala-archetype-simple:

clip_image017

點擊Next后,可根據需求自行填寫GroupId,ArtifactId和Version(請保證之前已經安裝maven)。點擊Finish后,maven會自動生成pom.xml和下載依賴包。同1.2章節中eclipse下創建maven工程一樣,需要修改pom.xml中scala版本。

clip_image013[1]

至此,IDEA下的一個默認scala工程創建完畢。

3. WordCount示例程序

3.1. 修改pom文件

在pom文件中添加spark和hadoop相關依賴包:

<!-- Spark -->

<dependency>

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

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

<version>1.1.0</version>

</dependency>

<!-- Spark Steaming-->

<dependency>

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

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

<version>1.1.0</version>

</dependency>

<!-- HDFS -->

<dependency>

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

<artifactId>hadoop-client</artifactId>

<version>2.6.0</version>

</dependency>
View Code

在<build></build>中使用maven-assembly-plugin插件,目的是package時把依賴jar也打包。

<plugin>

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

<version>2.5.5</version>

<configuration>

<appendAssemblyId>false</appendAssemblyId>

<descriptorRefs>

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

</descriptorRefs>

<archive>

<manifest>

<mainClass>com.ccb.WordCount</mainClass>

</manifest>

</archive>

</configuration>

<executions>

<execution>

<id>make-assembly</id>

<phase>package</phase>

<goals>

<goal>assembly</goal>

</goals>

</execution>

</executions>

</plugin>
View Code

3.2. WordCount示例

WordCount用來統計輸入文件中所有單詞出現的次數,代碼參考:

package com.ccb

import org.apache.spark.{ SparkConf, SparkContext }

import org.apache.spark.SparkContext._

/**

* 統計輸入目錄中所有單詞出現的總次數

*/

object WordCount {

def main(args: Array[String]) {

val dirIn = "hdfs://192.168.62.129:9000/user/vm/count_in"

val dirOut = "hdfs://192.168.62.129:9000/user/vm/count_out"

val conf = new SparkConf()

val sc = new SparkContext(conf)

val line = sc.textFile(dirIn)

val cnt = line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _) // 文件按空格拆分,統計單詞次數

val sortedCnt = cnt.map(x => (x._2, x._1)).sortByKey(ascending = false).map(x => (x._2, x._1)) // 按出現次數由高到低排序

sortedCnt.collect().foreach(println) // 控制台輸出

sortedCnt.saveAsTextFile(dirOut) // 寫入文本文件

sc.stop()

}

}
View Code

3.3. 提交spark執行

使用maven pacakge打包得到sparktest-1.0-SNAPSHOT.jar,並提交到spark集群運行。

執行命令參考:

./spark-submit --name WordCountDemo --class com.ccb.WordCount sparktest-1.0-SNAPSHOT.jar

即可得到統計結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM