2017-01-01 87 views
0

我正在使用下面的代码片段序列文件编写器,但它工作正常,如果序列文件不存在,但它会覆盖内容而不是附加到它。追加到现有序列文件正在覆盖内容

SequenceFile.Writer writer = SequenceFile.createWriter(FileContext.getFileContext(conf), conf, sequenceFile, Text.class, Text.class, CompressionType.NONE, null, new Metadata(), EnumSet.of(CreateFlag.CREATE, CreateFlag.APPEND)); 

请注意:我正在使用hadoop 2.7.2。

任何人都可以请帮助我如何附加到现有的序列文件?

而且我想下面的选项,以及,但没有运气:

Writer writer = SequenceFile.createWriter(conf, SequenceFile.Writer.file(sequenceFile), SequenceFile.Writer.keyClass(Text.class), SequenceFile.Writer.valueClass(Text.class), SequenceFile.Writer.appendIfExists(true), metadataOption); 

先谢谢了!

回答

0

使用Writer在SequenceFile.Writer的情况是这样的:

Writer writer = SequenceFile.createWriter(//required params); 

然后使用它的append方法。

Writer.append(param1, param2); 

我希望this link可以帮助你。

这是链接Allow appending to existing SequenceFiles。这个问题已经在2.7.2解决了

+0

是的,我尝试了链接中给出的选项,但仍然存在相同的问题。 – user3400887

+0

嘿!我添加了一个新的链接到我的答案。核实。 @ user3400887 –

+0

我试着用appendIf存在一个,但同样的覆盖问题。我用我试过的另一个选项更新了这个问题。 – user3400887