現在、次のコードを使用して既存の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 を使用しています