本文是对 org.apache.spark.deploy.yarn.ApplicationMasterArguments 源码学习的分析,spark的版本为2.11。
概述
org.apache.spark.deploy.yarn.ApplicationMasterArguments类主要用来对ApplicationMaster参数进行解析。
主要方法分析
parseArgs
该方法就是用来解析参数的。方法的定义如下
这个方法对ApplicationMaster参数进行解析,通过方法中match…case判断代码,我们可以看出ApplicationMaster允许的参数只有 6 个,如果包含其他名称的参数则会异常退出,并且参数–primary-py-file 和 参数–primary-r-file 不允许同时出现。对于上面的match…case的分析,见章节结尾部分。
printUsageAndExit
该方法用来将ApplicationMaster的使用参数信息进行打印。方法定义
问题分析
参数判断的match … case
首先看代码
case中的信息其实就是匹配模式,这里,如“(“–jar”) :: value :: tail”,其实就是在args开头匹配 “–jar” 参数,也就是如果args中的第一个值为”–jar“,那么将args的第二个值赋值给value,最后将剩余的值放到 tail中,但是需要注意的是,这个模式是从args的第一个元素开始的,如果第二元素是“–jar”,是不符合条件的。