spark-submit提交python脚本过程记录

Posted hgz-dm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark-submit提交python脚本过程记录相关的知识,希望对你有一定的参考价值。

        最近刚学习spark,用spark-submit命令提交一个python脚本,一开始老报错,所以打算好好整理一下用spark-submit命令提交python脚本的过程。先看一下spark-submit的可选参数

1.spark-submit参数

--master MASTER_URL:设置集群的主URL,用于决定任务提交到何处执行。常见的选项有

             local:提交到本地服务器执行,并分配单个线程

             local[k]:提交到本地服务器执行,并分配k个线程

             spark://HOST:PORT:提交到standalone模式部署的spark集群中,并指定主节点的IP与端口

             mesos://HOST:PORT:提交到mesos模式部署的集群中,并指定主节点的IP与端口

             yarn:提交到yarn模式部署的集群中

--deploy-mode DEPLOY_MODE:设置driver启动的未知,可选项如下,默认为client

             client:在客户端上启动driver,这样逻辑运算在client上执行,任务执行在cluster上

             cluster:逻辑运算与任务执行均在cluster上,cluster模式暂时不支持于Mesos集群或Python应用程序

--class CLASS_NAME :指定应用程序的类入口,即主类,仅针对java、scala程序,不作用于python程序

--name NAME :应用程序的名称

--jars JARS:用逗号隔开的driver本地jar包列表以及executor类路径,将程序代码及依赖资源打包成jar包

--packages:包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标

--exclude-packages:为了避免冲突 ,指定的参数--package中不包含的jars包

--repository:附加的远程资源库(包含jars包)等,可以通过maven坐标进行搜索

--py-files PY_FILES:逗号隔开的的.zip、.egg、.py文件,这些文件会放置在PYTHONPATH下,该参数仅针对python应用程序

--files FILES:逗号隔开的文件列表,这些文件将存放于每一个工作节点进程目录下

--conf PROP=VALUE:指定spark配置属性的值,格式为PROP=VALUE, 例如 -conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"

--properties-file FILE:指定需要额外加载的配置文件,用逗号分隔,如果不指定,默认为 conf/spark-defaults.conf

--driver-memory MEM :配置driver内存,默认为1G

--driver-java-options:传递给driver的额外选项

--driver-library-path:传递给driver的额外的库路径

--driver-class-path:传递给driver 的额外的类路径,用--jars 添加的jar包会自动包含在类路径里

--executor-memory MEM :每个 executor 的内存,默认是1G

当‘--master‘参数设置为Standalone,‘--deploy-mode’参数设置为cluster时,如下选项可以设置:

  --driver-cores NUM:driver使用的内核数,默认为1

当‘--master‘参数设置为Standalone或者Mesos,‘--deploy-mode’参数设置为cluster时,如下选项可以设置:

  --supervise:如果设置了该参数,driver失败是会重启

  --kill SUBMISSION_ID:如果设置了该参数,则会杀死指定SUBMISSION_ID的driver进程

  --status SUBMISSION_ID:如果设置了该参数,则请求返回指定SUBMISSION_ID的driver的状态

当‘--master‘参数设置为Standalone或者Mesos时,如下选项可以设置:

   --total-executor-cores NUM:设置集群中所有工作节点上executor使用的内核总数

当‘--master‘参数设置为Standalone或者YARN时,如下选项可以设置:

  --executor-cores NUM:每个executor使用的核数

当‘--master‘参数设置为YARN时,如下选项可以设置:

   --driver-cores NUM :当--deploy-mode为cluster时,driver使用的内核数,默认为1

   --queue QUEUE_NAME :将任务提交给哪个YARN队列,默认为YARN的默认队列

  --num-executors NUM:设置启动的executor数量,默认为2

  --archives ARCHIVES :被每个executor提取到工作目录的档案列表,用逗号隔开

2.提交python脚本

在提交firstApp.py脚本时,使用如下指令

$ spark-submit --master local[2] --num-executors 2 --executor-memory 1G --py-files /home/hadoop/Download/test/firstApp.py
技术图片

结果报如下错误“Error: Cannot load main class from JAR file:/home/hadoop/Download/spark-2.1.1-bin-hadoop2.7/bin/master”,其中:/home/hadoop/Download/spark-2.1.1-bin-hadoop2.7/bin/master与hadoop安装路径相关,虽然python脚本没有主类这一说,但是可以猜测到该错误是由于找不到函数入口导致,我在这里找打了一些答案,--py-fiels参数是用来添加应用程序所依赖的python文件的,我们要提交的应用程序可以直接采用如下方式提交,这样就没有报错了

$ spark-submit --master local[2] --num-executors 2 --executor-memory 1G  /home/hadoop/Download/test/firstApp.py
技术图片

 

以上是关于spark-submit提交python脚本过程记录的主要内容,如果未能解决你的问题,请参考以下文章

抛开spark-submit脚本提交spark程序

Spark学习之路 (十六)SparkCore的源码解读spark-submit提交脚本

Spark学习之路 (十六)SparkCore的源码解读spark-submit提交脚本[转]

Spark学习之路 (十六)SparkCore的源码解读spark-submit提交脚本

Spark-submit提交任务,封装shell脚本,shell脚本创建HBase表,批量导hive表

spark-submit提交程序,找不到类名