5.最簡單Spark應用 WordCount

編寫步驟

  • 引入spark庫

這裏使用maven

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_2.11</artifactId>
      <version>2.3.3</version>
    </dependency>
  • 導入庫
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
  • 初始化Context
val conf = new SparkConf().setAppName(appName).setMaster(master)
val sc = new SparkContext(conf)
  • 執行變換和操作

  • 關閉Context

本地測試

這指定master爲local[*] input和output路徑爲本地路徑,編寫代碼如下

object App {
  def main(args : Array[String]) {
    val master = "local[*]"
    val input = "/Users/wenzhou/Tmp/word.data"
    val output = "/Users/wenzhou/Tmp/mrout"

    val conf = new SparkConf();
    conf
      .setAppName("wenzhou_tmp");

    val sc  = new SparkContext(conf);
    sc
      .textFile(input)
      .flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
      .saveAsTextFile(output)

    sc.stop();
  }
}

直接本地編譯執行,成功,即本次測試成功,相對hadoop的MR這樣非常易於測試使用。

提交集羣運行

提交集羣使用我們修改上述的master和input/output如下,然後打包成jar。

    val master = "spark://wenzhoudeMacBook-Pro.local:7077"
    val input = "hdfs://localhost:9000/data/word.data"
    val output = "hdfs://localhost:9000/mrout"

這裏通過spark-submit來提交jar來執行,格式如下

./bin/spark-submit \
  --class <main-class> \
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]
  • –class 指定main class
  • –deploy-mode DriverProgram運行在client 還是cluster(Worker Node)上,默認client
  • –master 指定master機器,client部署時默認爲7077端口,cluster部署時必須爲REST接口,默認6066端口,集羣運行時必須用此參數指定
  • –conf 指定配置,覆蓋默認

比如這裏,client(deploy-mode)部署時,執行如下命令

bin/spark-submit --class org.jimwen.App --master spark://wenzhoudeMacBook-Pro.local:7077   ./SimpleSpark-1.0-SNAPSHOT.jar

cluster部署時,執行如下命令

bin/spark-submit --class org.jimwen.App --master spark://wenzhoudeMacBook-Pro.local:6066  --deploy-mode cluster ./SimpleSpark-1.0-SNAPSHOT.jar

這裏使用的standlone集羣演示,提交yarn集羣時指定master=yarn即可。

此外還可以指定執行時的內存/cpu核數,具體的提交參數,可參考官方文檔

下載

源碼下載地址

原創,轉載請註明來自

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章