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

在hadoop路径中为多个文件创建单个输入流-Java,java,stream,hdfs,inputstream,fileinputstream,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); CharS

我想为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);
Path filePath=新路径(hdfsPath);
hdfsFS=FileSystem.get(conf);
CharSequence fileNameFormat=“数据”;
FileStatus[]inputFiles=hdfsFS.listStatus(filePath);
向量输入流=新向量();
对于(int i=0;i

我想创建输入流,我不想把任何文件放到本地,然后创建一个输入流。还有其他有效的方法吗?

你说的“我不想把任何文件放到本地”是什么意思?(您的(发布的)代码不会将任何内容放在本地)我的意思是我不想在过程中的任何时候创建文件的任何物理副本。我的代码使用sequencestream而不制作任何文件的物理副本。