аргумент командной строки spark submit-read, который является файлом конфигурации [HOCON] с использованием Scopt и ConfigFactory - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть jar, который я запускаю через spark-submit, и раньше я использовал Argot для анализа файла конфигурации HOCON, который был проанализирован через ConfigFactory, а затем я прочитал оттуда.

 * 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"),
...