def parse(list: List[String]): Unit = list match {
case "--input" :: value :: tail =>
input = value
parse(tail)
case "--output" :: value :: tail =>
output = value
parse(tail)
case "--tmpOutputDir" :: value :: tail =>
tmpOutputDir = value
parse(tail)
case "--sql" :: value :: tail =>
sql = URLDecoder.decode(value)
parse(tail)
case _ :: tail =>
parse(tail)
case Nil =>
--master
MASTER_URL, 可 以 是
spark
://host:port, mesos://host:port, yarn, yarn-cluster,yarn-client, local
--deploy-mode
DEPLOY_MODE, Driver 程序运行的地方,client 或者 cluster,默认是client。
I know this is a trivial question, but I could not find the answer on the internet.I am trying to run a Java class with the main function with program arguments (String[]
args
).However, when I
submit
...
版本:
spark
2.3
相关源码:org.apache.
spark
.deploy.
Spark
Submit
Arguments
作用:
解析
并封装
spark
-
submit
脚本传递的
参数
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license ...
./bin/
spark
-
submit
\ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode> \ --conf <key>=<value> \ ... # other options <ap...
在实际生产中,都是使用 yarn-cluster 模式提交
spark
任务
,例如:
spark
-
submit
\
--class org.apache.
spark
.examples.
Spark
Pi \
--master yarn \
--deploy-mode client \
./examples/jars/
spark
-examples_2.11-2.3.2.3.1.0.0-78.jar \
2.源码分析
执行提交命令之后,首先会调用
# 命令行提交
Spark
应用样例:
#./bin/
spark
-
submit
\
# --class com.imooc.
spark
.Test.TestOf
Spark
Context2 \
# --conf
spark
.master
spark
://localhost:7077 \
# --master local[2] \
# /home/hadoop/data/test-jar/sql-1.0.jar arg1 arg2
if [ -z "${
之前我们已经进行了py
spark
环境的搭建以及经过jupyter notebook进行过开发以及实现了一系列的函数功能.但是一般我们跑
spark
都是在集群上面跑,只有测试一般在本地上测试,而且每个公司配置的
spark
集群的端口和设置的
参数
都有很大出入,故每种情况都有可能发生。所以一般
任务
提交的
参数
最好都需要能够清楚的明白对应功能。很多
spark
任务
都会吃大量的内存以及队列资源,合理的安排
spark
资源十分重要,这些都需要我们在
spark
-
submit
指令上面配置。
随着 application 的增加,需要不断安装新的包,而且不同 application 可能存在版本问题,这对于 client 模式来说或许还可以接受,但 cluster 模式肯定不行的,如果集群很大,装环境会很麻烦。在 client 模式下,Driver 就找在 Client 端,可以把 client 端的资源分发,而 cluster 模式下,Driver 可在集群任一节点,该节点是没有资源的。client:在客户端上启动driver,这样逻辑运算在client上执行,
任务
执行在cluster上。
本篇主要阐述
Spark
on Yarn
任务
提交源码分析说的流程,目的在于了解
任务
提交的大概流程;其主要是想通过对
Spark
任务
提交流程与涉及到的源码了解;在遇到问题的时候可以快速定位到是由什么环节导致的,从而可以快速排查问题并予以解决。
......
假如现在向
spark
-
submit
传参json字符串:{"transformer":[{"funcName":"replacefbw","parameter":{"columnName":"ARTI","params":[3,0,"****"]}}]}
json串会被我们程序里用到,这里涉及到的注意事项有,如果使用双引号包裹json串,则json里的双引号要用\来转义,即如下:
spark
-
submit
"{\"transformer\":[{\"funcName\":\"replacefbw\",\"