我正在写hadoop文件系统。但每次我附加某些内容时,它都会覆盖数据,而不是将其添加到现有数据/文件中。下面提供了执行此操作的代码。对于不同的数据,一次又一次地调用此代码。每次出现问题时都会打开一个新的SequenceFile.Writer吗?
每次我将路径作为新路径(“someDir”);
public void writeToHDFS(Path path, long uniqueId, String data){
FileSystem fs = path.getFileSystem(conf);
SequenceFile.Writer inputWriter = new SequenceFile.Writer(fs, conf,
path, LongWritable.class, MyWritable.class);
inputWriter.append(new LongWritable(uniqueId++), new MyWritable(data));
inputWriter.close();
}
答案 0 :(得分:3)
目前无法通过API附加到现有的SequenceFile。当您创建新的SequenceFile.Writer
对象时,它不会附加到该Path
的现有文件,而是覆盖它。查看我的earlier question。
正如Thomas指出的那样,如果您保留相同的SequenceFile.Writer
对象,则可以在调用close()
之前附加到该文件。