Java 命令行参数解析方式探索(四):Spark
我们在提交 Spark 任务时通常会设置任务名称、master 地址、driver 资源和 executor 资源等参数,除此之外还有很多,那么 Spark 是如何一步步解析这些命令行参数呢?让我们一起探索。
1. 主要流程
提交 Spark 任务执行的是 spark-submit shell 脚本,脚本中设定了启动类 org.apache.spark.deploy.SparkSubmit,委托 spark-class shell 脚本执行;
spark-class shell 脚本首先会加载 Spark 环境变量,接着构建运行时依赖的 jar 包,构建完毕执行 Java 命令,调用 org.apache.spark.deploy.SparkSubmit 的 main 方法;
org.apache.spark.deploy.SparkSubmit 虽然是一个单例对象,执行 main 方法时却又创建了一个新的自身类型实例,调用其 doSubmit 执行操作,doSubmit 方法内委托 SparkSubmitArguments 类来处理命令行参数;
在 SparkSubmitArguments 的构造函数中会调用父类 SparkSubmitOptionParser 的 parse 方法来解析实际的命令行参数。
最终经过上面的处理流程完成命令行参数的解析工作,接下来会着重介绍 SparkSubmitOptionParser 类的 parse 方法的工作原理。
2. SparkSubmitOptionParser 内部实现
本系列文章目录:
Java 命令行参数解析方式探索(二):Apache Commons CLI
版权声明: 本文为 InfoQ 作者【冰心的小屋】的原创文章。
原文链接:【http://xie.infoq.cn/article/5962c7d274d9ef4d35b259d3b】。文章转载请联系作者。
评论