gpt4 book ai didi

java - 如何从 hdfs 上的文件加载类型安全的 configFactory?

转载 作者:可可西里 更新时间:2023-11-01 14:43:41 30 4
gpt4 key购买 nike

我正在使用类型安全的 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())

但是,这会抛出 EOFException。有没有一种简单的方法可以将 FSDataInputStream 对象转换为所需的 java.io.File?我找到了 Converting from FSDataInputStream to FileInputStream , 但对于这样一个简单的任务来说,这将是非常麻烦的。

最佳答案

使用 ConfigFactory.parseReader 应该可以(但我还没有测试过):

val reader = new InputStreamReader(file)
val config = try {
ConfigFactory.parseReader(reader)
} finally {
reader.close()
}

关于java - 如何从 hdfs 上的文件加载类型安全的 configFactory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38123764/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com