【发布时间】:2020-12-23 23:20:20
【问题描述】:
我想读取文件路径,无论它们是 HDFS 还是本地文件。目前,我通过前缀为 file:// 的本地路径和前缀为 hdfs:// 的 HDFS 路径并编写如下代码
Configuration configuration = new Configuration();
FileSystem fileSystem = null;
if (filePath.startsWith("hdfs://")) {
fileSystem = FileSystem.get(configuration);
} else if (filePath.startsWith("file://")) {
fileSystem = FileSystem.getLocal(configuration).getRawFileSystem();
}
从这里我使用 FileSystem 的 API 来读取文件。
请告诉我是否有比这更好的方法?
【问题讨论】:
-
你为什么对你目前的方法不满意?
-
我本身并不不开心。我希望我的方法接受 Path 的对象,并且我想知道 Path 是否有任何方法可以告诉我该路径是属于本地文件系统还是属于 HDFS 文件系统。我试图做一个路径的 toString 并进行上面的比较,但它没有用。我必须到路径上的 toURI().toString() 并执行此检查。
-
我不确定是否需要为此创建一个新帖子。如果我应该有,我很抱歉。或者,我的问题是如果我有路径而不是字符串,我如何找到文件路径是 HDFS 还是本地的。会不会像我在第一篇文章中提到的那样做一个 toURI().toString() 并进行检查。或者做一个 toURI() 并检查方案是否。谢谢....
标签: java hadoop mapreduce hdfs