hadoop附加到sequencefile

thtygnil  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(357)

目前,我使用以下代码附加到现有的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();

如果sequencefile不存在,那么一切都可以工作,但是当文件存在时,hadoop再次在文件中间写入sequencefile头(seq…),并且该文件对于hadoop是不可读取的。
我使用hadoop2.6.0

p4tfgftt

p4tfgftt1#

我认为不可能附加到现有的序列文件。我已经分析了2.5.2和2.6.0-cdh5.5的源代码。在writer的每个构造函数中,都会写入“sequence file header”(从init函数)。
没有支持此功能的路径https://issues.apache.org/jira/browse/hadoop-7139 但它并没有被推到官方发布。
更新:hadoop-7139现在已经关闭,从版本2.6.1/2.7.2可以附加到现有的sequencefile:)

相关问题