基于scala的spark on yarn历史统计程序

我的测试程序代码:

1.写好scala代码

功能:从hdfs读取数据,然后处理后输出到hdfs

import org.apache.spark.sql.{Dataset, SparkSession}

object TestLoadDbData {
  def main(args: Array[String]): Unit = {
    if (args.size != 1) {
      println("程序参数不正确!!要求一个参数")
      System.exit(1);
    }
    val strOutUrl =args(0)
    println("------------ strOutUrl: "+strOutUrl)
    //获取sparkSession对象:设置master、appName、config【1.yarn的主机地址;2.添加的yarn的资源队列】
    val sparkSession = SparkSession.builder
      .master("yarn-client")
      //      .master("local")
      .appName("GetMmsi")
      .config("yarn.resourcemanager.hostname", "ip")
      .config("spark.yarn.queue", "spark")
      .getOrCreate()

    val hdfsUrl: String = "hdfs://ip:port/aa/bb/part-00000" //也是可以配置在启动命令的参数中的;hdfs输入
    val rdd: Dataset[String] = sparkSession.read.textFile(hdfsUrl)
    val countLines = rdd.count()
    println("统计的总行数为:" + countLines)
    rdd.write.csv(strOutUrl)
    
    sparkSession.close()
  }

}

2.本地使用local测试无误后,打包成jar包

这里有两种打包方式,1是胖包,2是瘦包,如果石胖包则是将所有的依赖包,都打进这个包里,有可能会报错,则将META-INF下的几个文件删除
在指定shell命令中键入:

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

3. spark可以使用yarn模式运行程序

对此脚本程序进行提交bin/spark-submit 命令提交,实在spark的安装目录下的bin文件夹下

./spark-submit 
--master yarn --deploy-mode client 
--class cetcocean.chenyekun.TestLoadDbData 
/root/testSpark/SparkScalaTest.jar 
hdfs://ip:port/aa/bb/csdn4

注意事项:这是启动spark-on yarn模式的最简单的命令了;更加详细的命令如下图所示
还可以写成一个shell脚本:

#!/usr/bin/env bash
 
bin/spark-submit \  
--master yarn \        #你的master平台:采用yarn模式时候:是yarn
--name wordcount \       #你的任务名称:作业命令:appName
--deploy-mode client \    #deploy-mode模式设置,可以使用client 或者cluster模式;(注意保持与应用程序保持一致,否则出现任务失败的情况)
--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 \   #分区数

4.等待执行成功后看hdfs文件输出

在这里插入图片描述


参考:https://blog.csdn.net/maketubu7/article/details/81136358
https://www.cnblogs.com/LHWorldBlog/p/8414342.html

猜你喜欢

转载自blog.csdn.net/fct2001140269/article/details/83185267
今日推荐