我想为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);
我想创建输入流,我不想将任何文件放到本地然后创建输入流。有没有其他有效的方法呢?