spark python 上传代码包_spark-submit提交python脚本过程记录

本文详细记录了使用`spark-submit`提交Python脚本的过程,包括参数解析和常见错误处理。在尝试提交`firstApp.py`时遇到错误,通过调整参数解决了问题。重点介绍了`--py-files`参数的用途以及如何正确提交Python应用程序。
摘要由CSDN通过智能技术生成

最近刚学习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

### 回答1: 使用spark-submit命令可以提交Python脚本Spark集群运行。具体步骤如下: 1. 确保已经安装好了Spark集群,并且配置好了环境变量。 2. 编写Python脚本,并将其保存到本地文件系统。 3. 打开终端,输入以下命令: ``` spark-submit --master <master-url> <path-to-python-script> ``` 其,`<master-url>`是Spark集群的URL,可以是local、yarn或者mesos等;`<path-to-python-script>`是Python脚本的路径。 4. 执行命令后,Spark会启动一个Driver程序,并将Python脚本分发到集群的Executor节点上运行。 5. 执行完成后,可以在终端查看输出结果。 注意:在提交Python脚本时,需要确保Python环境与Spark集群Python环境一致,否则可能会出现兼容性问题。 ### 回答2: spark-submitSpark框架用于提交作业的命令工具,可以将Python、Java、Scala等各种语言编写的Spark应用打后统一提交集群运行。本文将主要介绍如何使用spark-submit提交Python脚本。 首先,需要将Python程序一个压缩,例如zip或tar.gz格式,这里以zip格式为例。假设我们的Python程序存放在/home/user/code/目录下,我们需要将其打成myapp.zip文件,可以使用以下命令: ``` cd /home/user/code/ zip -r myapp.zip . ``` 上述命令将/home/user/code/目录下的所有文件和子目录打成myapp.zip文件。 接下来,我们就可以使用spark-submit提交这个Python应用了。下面是一个示例命令: ``` spark-submit --master <master-url> --deploy-mode <deploy-mode> --py-files <comma-separated-list-of-.zip/.egg-files> /home/user/code/myapp.py <arguments> ``` 解释一下各个参数的含义: - --master:指定Spark作业运行的master URL,例如local表示本地模式,yarn表示在YARN集群运行。 - --deploy-mode:指定Spark程序的部署模式,一般有两种:cluster和client。cluster表示在集群运行,client表示在提交作业的机器上运行。默认为client。 - --py-files:指定需要上传集群Python依赖库。如果Python脚本依赖了第三方库,需要将这些库打成zip或egg文件,通过--py-files参数上传集群。多个文件用逗号隔开。 - /home/user/code/myapp.py:需要运行Python脚本文件,这里我们使用之前打的myapp.zip文件。 - <arguments>:可选参数,传递给Python脚本的命令行参数。 上述命令会将myapp.zip文件上传集群,然后在集群上启动一个Python进程,并执行myapp.py文件代码Spark会自动分配资源给这个进程,并将任务分配到各个节点上执行。 总结一下,使用spark-submit提交Python脚本需要先将Python程序成zip或tar.gz文件,并使用--py-files参数上传Python依赖库。在提交作业时需要指定master URL、部署模式、Python脚本文件以及传递给脚本的命令行参数。通过这些参数,Spark可以自动将作业分配到集群运行,实现分布式计算。 ### 回答3: spark-submitSpark一个命令行工具,用于将Spark应用程序提交集群。在使用spark-submit提交Python脚本时,需要遵守以下步骤: 1. 首先,需要确定要提交Python脚本的位置。假设我们的Python脚本位于/home/spark/python_script.py。 2. 接下来,需要使用spark-submit命令来提交Python脚本。命令格式为: $SPARK_HOME/bin/spark-submit --master <master-url> /home/spark/python_script.py 其,<master-url>表示Spark集群的master节点的URL。 3. 提交Python脚本时,还可以指定一些配置参数。例如,可以使用--num-executors参数指定Spark应用程序使用的执行者数量,--executor-memory参数指定每个执行者使用的内存大小,--driver-memory参数指定驱动程序使用的内存大小等等。 4. 在提交Python脚本后,Spark将在集群启动一个应用程序,并执行Python脚本的任务。任务的执行结果将被输出到控制台或指定的输出文件。 需要注意的是,Spark支持的Python版本是2.6或2.7,而且要确保Python脚本引用的所有依赖都已经安装在集群的所有节点上。如果有依赖未安装,则必须手动将其安装到所有节点上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值