在安装方法中,是否有任何方法可以获得与当前文件(在hdfs中)相同文件夹中的文件列表



我的java hadoop作业得到一些路径作为输入。我重写了mapper类中的setup方法,并且我可以获得当前文件的路径:

((FileSplit) context.getInputSplit()).getPath().toString();

是否有任何方法可以获得与当前文件(在hdfs)相同文件夹中的文件列表,在安装方法中?

更准确地说,我需要处理以下情况:文件夹包含一组文件,每个文件在其名称中包含一些代码,例如:

fileName_somecode1.txt fileName_somecode2.txt ... fileName_somecoden.txt

在mapper开始工作之前,我需要阅读文件夹中的所有文件,收集所有代码,然后决定是否需要处理当前文件。

让我们看一个简单的例子:

test_1.txt test_2.txt test_3.txt

我需要跳过所有的文件,如果有一些代码比当前的多或少,所以在这个玩具的例子中,test_2.txt应该被跳过,因为有1和3个代码。

你可以试试:

Path file = ((FileSplit) context.getInputSplit()).getPath();
Path folder = file.getParent();
Configuration conf = context.getConfiguration();
FileSystem fs = FileSystem.get(folder.toUri(), conf);
FileStatus[] statuses = fs.listStatus(folder); // get list of files in folder
for (FileStatus status : statuses) {
    Path f = status.getPath();
    // process file f
}

相关内容

  • 没有找到相关文章

最新更新