1. 程式人生 > >關於spark利用jar包跑job的一些總結(一)

關於spark利用jar包跑job的一些總結(一)

分別利用eclipse和IDEA打jar包

用eclipse打包:

用eclipse打包最終還是不能放在spark上用,如果是需要解決問題的,可以直接跳到IDEA部分,這裡只介紹一些eclipse的過程,以及最後的問題(如果有能指出問題所在的小夥伴,求指導求教育)

新建Scala工程 - 新建Scala Class - 編寫程式碼:

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._

object WordCount {
  def main(args: Array[String]) {
    if (args.length
< 1) { System.err.println("Usage: <file>") System.exit(1) } val conf = new SparkConf() val sc = new SparkContext(conf) val line = sc.textFile(args(0)) line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println) println("Please!") sc.stop
() } }

然後新增spark api的依賴jar包,就是spark編譯出來那個spark-assembly-*.jar
兩種方法:
(其中第一種方法最後export出來的jar包會很小,雖然有依賴關係,但是包中不把spark-assembly這個jar包封裝進去,一般最後的jar包只有幾k大小; 第二種方法會把spark-assembly這個jar包封裝進去,所以最後得到的jar包會很大,一般會一兩百M。)
1、右鍵你的工程-properties-Java Build Path(左側)-libraries(右側上方)-Add External JARs(右側)
然後加入spark-assembly那個jar包就可以了。
這裡寫圖片描述


2、右鍵你的工程-New-Folder
隨便起個名字(我就是左邊的“jar”)
然後把spark-assembly那個jar包直接拖到這個資料夾裡
然後右鍵這個jar包-Build Path-Add Build Path
這裡寫圖片描述

最後右鍵你的工程-Export-java-JAR file(就正常的匯出jar包過程就行)。

用eclipse得到的jar包最終還是不能用,放在spark環境裡執行,一直說找不到main函式,就像沒把spark-assembly那個jar包封裝進去一樣。兩種方法均嘗試了,均以失敗告終:
這裡寫圖片描述

用IDEA打包:

同樣是新建工程-新建Scala class-碼程式碼
這裡寫圖片描述
然後右鍵你的工程 - Open Module Setting-Libraries(左邊)- 點中間上面的綠色加號-java-選擇spark-assembly那個jar包
再點中間上面的綠色加號-Scala SDK- 選擇你的Scala路徑
這裡寫圖片描述
然後是Artifacts(左邊)-點中間上面的綠色加號-JAR-From…
在Main Class那一欄選擇包含有main函式的那個object
這裡寫圖片描述
最後回到工程介面,點選上面的Build-Build Artifacts-Build
搞定,生成的jar包在output/artifacts路徑下。

用IDEA這個jar包是可以執行的。