關於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包是可以執行的。