我有一个正在运行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"),