spark 提交任务到yarn上运行

1、在idea上先写好,自己的代码并进行测试,这里贴一个很简单的统计单词个数的代码

package spark

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
  def main(args: Array[String]) {
    //1/创建sparkconf和spark上下文
    /**
      *
    A master URL must be set in your configuration
        An application name must be set in your configuration
        所有的配置文件信息,其实都是在sparkconf当中加载的,所以如果你要设置
        配置文件的信息的话,conf.set("key","value")
      */
    val conf = new SparkConf()
      //本地模式,* 会在运行期间检查当前环境下还剩下多少cpu核心,占满
      //.setMaster("local[*]")
      //.setAppName("idea_start_wc")

    val sc = new SparkContext(conf)

    val coalesceNum = Integer.parseInt(conf.get("spark.app.coalesce"))

    val resultRdd: RDD[(String, Int)] = sc.textFile("hdfs://192.168.89.77:8020/spark/datas/test.txt")
      .flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _) //到这一步已经实现wc
      .map(t=>(-t._2,t._1)).sortByKey().map(t=>(t._2,-t._1)) //这一步做排序
      //repartition   
	  //coalesce
      //以上这两个重分区的api有什么区别?
      .coalesce(coalesceNum)

    //保存
    resultRdd.saveAsTextFile(s"hdfs://192.168.89.77:8020/spark/sparkrdd_idea/wordcount_res${System.currentTimeMillis()}")

    //调用线程等待,为了方便去页面上看结果信息
    //程序终止(通过正常手段关闭程序)
    sc.stop()

  }
}

2、在本地测试无误后,将代码打包,这里有两种打包方式,1是胖包,2是瘦包,如果石胖包则是将所有的依赖包,都打进这个包里,有可能会报错,则将META-INF下的几个文件删除 

==>    zip -d <你的jar包名称.jar> META-INF/*.RSA META-INF/*.DSA META-INF/*.SF  这个是对压缩包里的文件进行删除的命令

3、编写,导入的脚本文件 我的配置有限  如下

#!/usr/bin/env bash


bin/spark-submit \  
--master yarn \         你的master平台
--name wordcount \       你的任务名称
--deploy-mode client \    deploy-mode模式设置,不知道的百度下
--class spark.WordCount \  你编写的类所在的位置
--driver-memory   1G  \     driver的内存分配
--driver-cores 1 \          driver的核心数
--executor-memory 1G \       每个executor的内存
--executor-cores 1 \         executor的核心数
--num-executors 1  \         executor个数
--conf spark.app.coalesce=2 \   我们代码里面穿的参数的名字,也就是分区数
/opt/cdh/spark/datas/word_count.jar    我们jar包所在的位置

4、对此脚本程序进行提交bin/spark-submit 命令提交,可以在yarn平台看到我们提交的任务,以及我么你的结果

 

这里可以我么那可以看到,是两个文件,虽然有一个为空文件,但确实是我们传进来的参数2,得到了两个分区

以上

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值