使用spark-submit提交PySpark程序

对于公司大数据的批量处理或周期性数据分析/处理任务,通常采用编写好的Spark程序,并通过spark-submit指令的方式提交给Spark集群进行具体的任务计算,spark-submit指令可以指定一些向集群申请资源的参数。

Spark安装包附带有spark-submit.sh脚本文件(适用于Linux、Mac)和spark-submit.cmd命令文件(适用于Windows)。这些脚本可以在$SPARK_HOME/bin目录下找到。

spark-submit命令是一个实用程序,通过指定选项和配置向集群中运行或提交PySpark应用程序(或job作业)。spark-submit命令支持以下功能。

  • 在Yarn、Kubernetes、Mesos、Stand-alone等不同的集群管理器上提交Spark应用。
  • 在client客户端部署模式或cluster集群部署模式下提交Spark应用。

下面是一个带有最常用命令选项的spark-submit命令。

./bin/spark-submit \
  --master  \
  --deploy-mode  \
  --conf  \
  --driver-memory g \
  --executor-memory g \
  --executor-cores   \
  --jars 
  --class  \
   \
  [application-arguments]

提交pi.py程序,计算圆周率π值

Spark安装包中自带了一个使用蒙特卡罗方法求圆周率π值的程序。下面我们使用spark-submit将其提交到PySpark集群上以standalone模式运行,以掌握spark-submit提交PySpark程序的方法。

请按以下步骤操作。

1)打开终端窗口。

2)确保已经启动了Spark集群(standalone)模式(启动方式见上一节)

3)进入到Spark主目录下,执行以下操作:

$ cd ~/bigdata/spark-3.1.2
$ ./bin/spark-submit --master spark://xueai8:7077 examples/src/main/python/pi.py

说明:

  • --master参数指定要连接的集群管理器,这里是standalone模式。
  • 最后一个参数是所提交的python程序。

运行结果如下图所示:

......

提交PySpark程序到YARN集群上执行

也可以将PySpark程序运行在YARN集群上,由YARN来管理集群资源。下面我们使用spark-submit将pi.py程序提交到Spark集群上以YARN模式运行。

请按以下步骤执行。

1)打开终端窗口。

2)不需要启动Spark集群。启动Hadoop/YARN集群:

$ start-dfs.sh
$ start-yarn.sh

执行过程如下图所示:

3)进入到Spark主目录下,执行以下操作:

$ cd ~/bigdata/spark-3.1.2
$ ./bin/spark-submit --master yarn examples/src/main/python/pi.py

执行过程如下图所示:

执行结果如下图所示:


《PySpark原理深入与编程实战》