【发布时间】:2017-04-03 02:51:01
【问题描述】:
我有一个名为 Omega 的 spark/scala 项目
我在 Omega/conf/omega.config 中有一个 conf 文件
我使用 typesafe 的 API 从 conf/omega.config 加载配置文件。 它工作正常,我能够读取每个键的相应值
今天,我第一次在我的 omega.config 文件中添加了更多键值对,并尝试从我的 scala 代码中检索它们。它抛出
Exception in thread "main" com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'job_name'
在我的 omega.config 文件中为键 job_name 添加新值后,此问题开始发生。 另外我无法读取新添加的 -key-values,我仍然可以使用 config.xml 读取所有旧值。获取字符串方法
我正在使用 maven 构建我的 spark/scala 应用程序。
Omega.config
input_path="/user/cloudera/data
user_name="surender"
job_name="SAMPLE"
我无法单独访问最近添加的密钥“job_name” 包 com.pack1
import com.pack2.ApplicationUtil
object OmegaMain {
val config_loc = "conf/omega.config"
def main(args: Array[String]): Unit = {
val config = ApplicationUtil.loadConfig(config_loc)
val jobName = ApplicationUtil.getFromConfig(config,"job_name")
}
}
package com.pack2
import com.typesafe.config.{Config, ConfigFactory}
object ApplicationUtil {
def loadConfig(filePath:String):Config={
val config = ConfigFactory.parseFile(new File(filePath))
config
}
def getFromConfig(config:Config,jobName:String):String={
config.getString(jobName)
}
}
有人可以帮我解决问题吗?
【问题讨论】:
-
您是否将配置直接解析为一个类?向我们展示您用于处理类型安全配置的代码。 minimal reproducible example 如果你愿意的话。
-
@Yuval:也添加了代码
-
您使用的路径是相对的...也许您没有从以前的相同位置执行您的应用程序?进行测试并尝试指定绝对路径,或者如果文件在您的类路径中,请尝试将其指定为资源而不是构建新的文件(路径)。
标签: scala apache-spark