scala - 在运行时从自定义位置加载 HOCON 格式的类型安全配置
问题描述
我有一个应用程序,它可以通过文件获取工作配置信息(可能有几十个文件,每个文件都描述了应用程序要完成的特定工作,最好是灵活地确定它们的位置),为此我们选择了 HOCON 格式和类型安全库。
它在从资源文件夹进行开发加载时效果很好,但目的是在运行时通过参数传递这些配置文件的路径,同时调用 spark-submit (spark-submit ... pathToFile ...)。
但是读取文件的路径失败并出现以下错误:
val jConfig = ConfigFactory.load(path)
com.typesafe.config.ConfigException$Missing: system properties: No configuration setting found for key 'configuration'
如何从 /resources 以外的其他位置读取配置文件?
解决方案
根据@hagarwal 提示,以下工作
val input = Source.fromFile(path,"UTF8").mkString
val jConfig = ConfigFactory.parseString(input)
解决方案
将配置存储在 HDFS/S3/ADFS/Local 文件系统中,将配置文件路径作为参数传递给程序,从配置文件路径中读取配置文件作为输入流(或文件)。
val confPath = args(0) //Configuration file path
val stream = Client.getObject(confPath) //Client -> HDFS/S3/ADFS/Local
val configString = Source.fromInputStream(stream.asInstanceOf[InputStream]).mkString
val config = ConfigFactory.parseString(configString)
推荐阅读
- teamcity - anaconda 在激活时即时运行脚本
- c++ - 如何使这个递归函数从给定的起始位置返回最小的整数?
- java - 如何在java中继承特定的实例变量
- r - 如何使图例变小?
- android - 在 Kotlin 中使用 ByteArrays 和 SecretKeySpec
- android - 自定义 LayoutManager 禁止子视图的触摸事件,第一个视图除外
- node.js - 如何在 Angular 应用程序中显示节点 js api 错误
- python-3.x - 使用 bash 脚本导出的环境变量在 python 中无法访问
- excel - 如何将工作簿限制为特定用户
- html - 图像显示为水平图像而不是垂直图像