Mal*_*lte 2 java hadoop scala typesafe-config
我正在使用typesafe ConfigFactory将配置加载到我的scala应用程序中.我不想将配置文件包含在我的jar中,而是从外部hdfs文件系统加载它们.但是,我找不到从hadoop获取的fsDataInputStream对象加载配置的简单方法:
//get HDFS file
val hadoopConfig: Configuration = sc.hadoopConfiguration
val fs: FileSystem = org.apache.hadoop.fs.FileSystem.get(hadoopConfig)
val file: FSDataInputStream = fs.open(new Path("hdfs://SOME_URL/application.conf"))
//read config from hdfs
val config: Config = ConfigFactory.load(file.readUTF())
Run Code Online (Sandbox Code Playgroud)
但是,这会抛出EOFException.有没有一种简单的方法将FSDataInputStream对象转换为所需的java.io.File?我发现从FSDataInputStream转换到FileInputStream,但这对于这么简单的任务来说非常麻烦.
使用ConfigFactory.parseReader应该工作(但我还没有测试过):
val reader = new InputStreamReader(file)
val config = try {
ConfigFactory.parseReader(reader)
} finally {
reader.close()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |