我想读取文件路径,不管它们是hdfs还是local。目前,我传递带有前缀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();
}
从这里我使用文件系统的api来读取文件。
你能告诉我还有没有比这更好的办法吗?
4条答案
按热度按时间lmyy7pcs1#
请检查下面列出hdfs路径文件的代码段;即以
hdfs://
. 如果你能提供hadoop配置和本地路径,它也会列出来自本地文件系统的文件;即以file://
.如果您真的想使用java.io.fileapi,那么下面的方法将帮助您只列出本地文件系统中的文件;即以
file://
.knpiaxh12#
你可以得到
FileSystem
通过以下方式:您不需要判断路径是否以
hdfs://
或者file://
. 这个api将完成这项工作。zzoitvuj3#
这项工作。
huus2vyu4#
这有意义吗,
如果你走这条路,你不必付支票。直接从path获取文件系统,然后做任何您想做的事情。