在hadoop路径中为多个文件创建单个输入流 - Java

时间:2015-04-30 22:44:56

标签: java stream hdfs inputstream fileinputstream

我想为HDFS路径中的多个文件创建单个输入流。 HDFS路径包含许多数据文件(例如:data-1,data-2,.... data-n)。它还包含_SUCCESS文件。我想为所有包含_SUCCESS文件的数据文件创建一个输入流。

现在,我将进入FileStatus循环并为单个文件创建输入流。我合并这些输入流以创建sequenceStream。

以下是我的代码示例:

Path filePath = new Path(hdfsPath);
hdfsFS = FileSystem.get(conf);

CharSequence fileNameFormat = "data";
FileStatus[] inputFiles = hdfsFS.listStatus(filePath);

Vector<InputStream> inputStreams = new Vector<InputStream>();


for (int i =0; i < inputFiles.length; i++)
{
    System.out.println(inputFiles[i].getPath().getName());

    if (inputFiles[i].getPath().getName().contains(fileNameFormat)) {

        Path fileName = new Path(hdfsPath + inputFiles[i].getPath().getName());
        fileInputStream = hdfsFS.open(fileName);

        inputStreams.add(fileInputStream);

    }
}

Enumeration<InputStream> enu = inputStreams.elements();
sequenceStream = new SequenceInputStream(enu);

我想创建输入流,我不想将任何文件放到本地然后创建输入流。有没有其他有效的方法呢?

0 个答案:

没有答案