目前我使用以下代码附加到现有的SequenceFile:
// initialize sequence writer
Writer writer = SequenceFile.createWriter(
FileContext.getFileContext(this.conf),
this.conf,
new Path("/tmp/sequencefile"),
Text.class,
BytesWritable.class,
CompressionType.NONE,
null,
new Metadata(),
EnumSet.of(CreateFlag.CREATE, CreateFlag.APPEND),
CreateOpts.blockSize(64 * 1024 * 1024));
writer.append(key, value);
// close writer
writer.hsync();
writer.close();
如果序列文件不存在,一切正常,但是当文件存在时,Hadoop 在文件中间再次写入SequenceFile标头(SEQ ...),并且该文件对于 Hadoop 来说是不可读的。
我使用 Hadoop 2.6.0