В настоящее время я использую следующий код для добавления к существующему файлу 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.
Я использую Хадуп 2.6.0