美文网首页
spark submit脚本指定传递给main方法的参数

spark submit脚本指定传递给main方法的参数

作者: alexlee666 | 来源:发表于2019-03-15 11:10 被阅读0次

    spark是一个非常好用的大数据分布式计算框架。套话不多说,直接进入正题。spark的开发和测试中经常会使用spark submit脚本将编写好的spark应用(比如java和scala编写并打包好的jar包)提交给spark集群进行处理。为了方便调试,经常需要向main方法传递参数,但是目前很多博文介绍的大多都是关于spark-submit参数调优方面的。那么如何在spark submit脚本中向main方法传递参数呢?如果参数中包含空格该如何处理呢?
    另外除了spark submit脚本之外,还可以使用SparkLauncher向spark集群提交应用,具体可以参考博客:
    https://www.jianshu.com/p/36193b394a50

    object TestMain{
      def main(args: Array[String]):Unit {
        ......
      }
     }
    
    先来看一个spark submit脚本示例:
    spark2-submit \      # 第1行
    --class com.google.datalake.TestMain \      #第2行
    --master yarn \      # 第3行
    --deploy-mode client \      # 第4行
    --driver-memory 3g \      # 第5行
    --executor-memory 2g \      # 第6行
    --total-executor-cores 12 \      # 第7行
    --jars /home/jars/test-dep-1.0.0.jar,/home/jars/test-dep2-1.0.0.jar,/home/jars/test-dep3-1.0.0.jar \      # 第8行
    /home/release/jars/test-sql.jar \      # 第9行
    para1 \      # 第10行
    para2 \      # 第11行
    "test sql" \      # 第12行
    parax      # 第13行
    
    示例分析:
    • 第1行:指定该脚本是一个spark submit脚本(spark老版本是spark-submit,新版本spark2.x是spark2-submit);
    • 第2行:指定main类的路径;
    • 第3行:指定master(使用第三方yarn作为spark集群的master);
    • 第4行:指定deploy-mode(应用模式,driver进程运行在spark集群之外的机器,从集群角度来看该机器就像是一个client);
    • 第5行:分配给driver的内存为3g,也可用m(兆)作为单位;
    • 第6行:分配给单个executor进程的内存为2g,也可用m(兆)作为单位;
    • 第7行:分配的所有executor核数(executor进程数最大值);
    • 第8行:运行该spark application所需要额外添加的依赖jar,各依赖之间用逗号分隔;
    • 第9行:被提交给spark集群执行的application jar;
    • 第10~13行:传递给main方法的参数,按照添加顺序依次传入,如果某个参数含有空格则需要使用双引号将该参数扩起来;
    spark submit脚本中各参数顺序的注意事项:
    • 每个参数(最后一个参数除外)后需要先空格再使用\表示结尾;
    • spark2-submit必须写在最前面;
    • class、master yarn、deploy-mode client等使用了--标注的参数的顺序可以相互调整;
    • application jar名这个参数必须写在使用了--标注的参数后;
    • 向main方法传递的参数必须写在application jar之后。

    相关文章

      网友评论

          本文标题:spark submit脚本指定传递给main方法的参数

          本文链接:https://www.haomeiwen.com/subject/bnzkmqtx.html