spark提交读取的命令行参数,它是使用Scopt和ConfigFactory

时间:2019-04-09 15:32:38

标签: scala apache-spark hocon scopt

我有一个正在运行spark-submit的jar,之前我使用Argot解析了通过ConfigFactory解析的HOCON配置文件,然后从那里读取了文件。

 * spark/bin/spark-submit --class ConsumerApp \
 *                        --master local[2] \
 *                        some-consumer-jar-0.1.0.jar \
 *                        --config config.hocon

不幸的是Argot现在是一个死项目,要升级到当前版本的Scala,我必须开始使用Scopt,但是我很难理解如何使用Scopt解析相同的配置文件并在ConfigFactory中加载,而不会产生太多变化。

尝试通读文档,但找不到太多内容。

当前实施

def main(args: Array[String]) {

    // General bumf for our app
    val parser = new ArgotParser(
      programName = "generated",
      compactUsage = true,
      preUsage = Some("%s: Version %s, %s.".format(
        generated.Settings.name,
        generated.Settings.version,
        generated.Settings.organization)
      )
    )

    // Optional config argument
    val config = parser.option[Config](List("config"),
      "filename",
      "Configuration file.") {
      (c, opt) =>

        val file = new File(c)
        if (file.exists) {
          ConfigFactory.parseFile(file)
        } else {
          parser.usage("Configuration file \"%s\" does not exist".format(c))
          ConfigFactory.empty()
        }
    }
    parser.parse(args)

    // read the config file if --config parameter is provided else fail
    val conf = config.value.getOrElse(throw new RuntimeException("--config argument must be provided"))

然后像这样

阅读
arg1 = conf.getConfig("somelevel").getString("arg1"),

0 个答案:

没有答案