一、IDEA建立scala應用
Create New Project
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9MGVNp3Zq10dRRVT3V1MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxMTM4ITOzUTMzITMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
選擇scala,IDEA,點選next
項目名稱:sparkApp,選擇JDK,選擇Scala SDK,點選finish
等待附加元件目,項目目錄結構如下
打開file下的 Project structure
建立目錄和設定屬性:
把src設定為source;
在src下建立2個目錄,main和test,其中main設定為source,test設定為test;
在main和test目錄下分别建立3個目錄:java,resource,scala;
main目錄下的java和scala設定為source,resource設定為resource;
test目錄下的java和scala設定為test,resource設定為test resource;
二、建立scala object類
引入spark必須的包;
再次打開project struct,libraries,
選擇 spark-1.3.0-bin-2.5.0-cdh5.3.6/lib 目錄下的所有 jar包;點選 ok
可以在外部包看到引入的lib
在Scala 目錄下建立package:com.spark.app
建立scala object:SparkDemo;
從hdfs讀取檔案生成rdd,處理完後儲存結果到hdfs;
package com.spark.app
import org.apache.spark.{SparkConf, SparkContext}
/*
scala的main方法必須在 object 中
*/
object SparkDemo {
def main(args: Array[String]): Unit = {
val inputFile = "hdfs://hadoop-senior.ibeifeng.com:8020/user/root/mapreduce/wordcount/input/wc.input" // Should be some file on your system
val outputFile = "hdfs://hadoop-senior.ibeifeng.com:8020/user/root/mapreduce/wordcount/sparkOutput"
val conf = new SparkConf().setAppName("Simple Application") //.setMaster("local")
val sc = new SparkContext(conf)
val rdd = sc.textFile(inputFile);
val wordCount = rdd.flatMap(line => line.split(" ")).map(x => (x, 1)).reduceByKey((x, y) => (x + y))
wordCount.saveAsTextFile(outputFile)
sc.stop()
}
}
右鍵運作 SparkDemo;檢視hdfs上生成的檔案;
bin/hdfs dfs -text /user/root/mapreduce/wordcount/sparkOutput/part-00000
(hive,3)
(hadoop,3)
(sqoop,2)
(hbase,2)
三、打包
再次打開project structure;選擇artifacts,點選 + 号;選擇JAR,點選 “from modules with dependencies”
選擇主類,SparkDemo;點選 ok
删除jar包,選中jar包,點選 - 号删除;
删除後,點選ok
找到build -> build artifacts
選中上文設定的jar,再點選build
在根目錄下有新的目錄out,在下級目錄可以找到生成的 sparkApp.jar
四、釋出到spark運作
把sparkApp.jar 用 filezilla 上傳到 spark-1.3.0-bin-2.5.0-cdh5.3.6/jars 目錄下
spark-submit 入門了解,如果是多行,每一行最後的反斜杆 \ 不可以省略;
bin/spark-submit \
--class <main-class> \ -- jar包的主類,在打包時已經設定主類,是以這一個配置可以删除
--master <master-url> \ -- 叢集管理器所在的節點
--deploy-mode <deploy-mode> \ -- 部署模式,可以是client或cluster
--conf <key>=<value> \ -- 配置的參數
... # other options
<application-jar> \ -- jar包名稱
[application-arguments] -- 啟動應用的參數
sparkApp.jar 啟動的 spark-submit 指令應該為:
bin/spark-submit \
--master spark://hadoop-senior.ibeifeng.com:7077 \
jars/sparkApp.jar
由于在上文已經運作 sparkDemo,在hdfs上有生成輸出的檔案;是以要先删除該目錄
bin/hdfs dfs -rm -r mapreduce/wordcount/sparkOutput
在 spark-1.3.0-bin-2.5.0-cdh5.3.6 目錄下運作 spark-submit 指令
運作指令後;檢驗是否成功執行sparkDemo;
在hdfs上,/user/root/mapreduce/wordcount/sparkOutput 有新生成檔案
說明有執行成功。