spark 有一个spark-submit命令可以提交spark应用,
比如:
./bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
参数含义:
参数 | 含义 |
---|---|
--class | 包含spark任务入口的类 |
--master | spark 集群url |
--deploy-mode | 部署方式,分为client和cluster两种 |
--conf | 额外配置属性 |
--application-jar | jar目录 |
--application-argument | main方法参数 |
master参数可以是以下这些形式:
格式 | 含义 |
---|---|
local | 本地运行spark且只有一个worker线程 |
local[K] | 本地运行spark且有K个worker线程。k一般设置为机器的CPU数量 |
local[*] | 本地运行spark并以尽可能多的worker线程运行 |
spark://HOST:PORT | 连接指定的standalone集群 |
mesos://HOST:PORT | 连接到指定的mesos集群,如果mesos集群使用zookeeper管理,则为mesos://zk://.... |
yarn-client | 以client方式连接到yarn集群 |
yarn-cluster | 以cluster模式连接到yarn集群 |
例子:
./bin/spark-submit
--class org.apache.spark.examples.SparkPi
--master spark://xxx.xxx.xxx.xxx:7077
--executor-memory 20G
--total-executor-cores 100
/path/to/examples.jar
官方也给出了这样直接在java代码中提交应用的例子:
import org.apache.spark.launcher.SparkLauncher;
public class MyLauncher {
public static void main(String[] args) throws Exception {
Process spark = new SparkLauncher()
.setAppResource("/my/app.jar")
.setMainClass("my.spark.app.Main")
.setMaster("local")
.setConf(SparkLauncher.DRIVER_MEMORY, "2g")
.launch();
spark.waitFor();
}
}
spark 也有类似的类 :https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.launcher.SparkLauncher