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核数,具体的提交参数,可参考官方文档

下载

源码下载地址

原创,转载请注明来自

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