Spark-submit
spark-submit 是 Apache Spark 提供的用于提交 Spark 应用程序到集群的命令行工具。
基本语法
spark-submit [options] <app-jar> [app-arguments]
常用参数说明
应用程序配置
- --class <class-name>: 指定应用程序的主类(对于 Java/Scala 程序)
- --name <app-name>: 设置应用程序名称
- --jars <jars>: 添加额外的 JAR 文件到 classpath(逗号分隔)
- --py-files <files>: 为 Python 应用添加额外的文件(.zip, .egg, .py)
- --files <files>: 将文件上传到执行器工作目录(逗号分隔)
- --conf <key>=<value>: 设置任意 Spark 配置属性
资源分配
- --driver-memory <memory>: 设置 Driver 进程内存(如 1g)
- --executor-memory <memory>: 设置每个 Executor 进程内存(如 1g)
- --executor-cores <num>: 设置每个 Executor 使用的核心数
- --num-executors <num>: 设置要启动的 Executor 数量
- --total-executor-cores <num>: 设置所有 Executor 使用的总核心数
部署模式
-  --master <master-url>: 指定集群管理器- local: 本地模式(单线程)
- local[K]: 本地模式(K 个线程)
- local[*]: 本地模式(使用所有核心)
- spark://host:port: 连接到独立部署的 Spark 集群
- mesos://host:port: 连接到 Mesos 集群
- yarn: 连接到 YARN 集群
- k8s://https://host:port: 连接到 Kubernetes 集群
 
-  --deploy-mode <mode>: 部署模式(client 或 cluster)- client: Driver 在提交的客户端运行(默认)
- cluster: Driver 在集群中运行
 
其他参数
- --verbose: 打印调试信息
- --version: 打印 Spark 版本
- --help: 显示帮助信息
- --supervise: 如果失败则自动重启 Driver(仅限独立集群)
- --kill <submissionId>: 终止指定应用程序
- --status <submissionId>: 查询指定应用程序状态
使用示例
spark-submit --master yarn \
--deploy-mode client \
--driver-memory xG \
--executor-memory XG \
--class org.xx.xx \
--executor-cores x \
jar包
arg0 arg1
基本示例
# 本地运行(4个线程)
spark-submit --class org.apache.spark.examples.SparkPi \--master local[4] \/path/to/examples.jar \100# YARN 集群模式
spark-submit --class org.apache.spark.examples.SparkPi \--master yarn \--deploy-mode cluster \--executor-memory 2g \--num-executors 10 \/path/to/examples.jar \100
Python 应用示例
spark-submit --master spark://master:7077 \--executor-memory 1g \--py-files dependencies.zip \my_python_app.py \arg1 arg2