【问题标题】:Can you append data to an existing Avro data file?您可以将数据附加到现有的 Avro 数据文件吗?
【发布时间】:2012-01-10 16:26:33
【问题描述】:

似乎没有任何方法可以将数据附加到现有的 Avro 序列化文件中。我想让多个进程写入一个 avro 文件,但看起来每次打开它时,我都是从头开始的。我不想读入所有数据然后再写回。

使用 ruby​​ 示例代码,我尝试了“ab”和“ab+”作为各种设置,但没有任何乐趣。

file = File.open('data.avr', 'wb')
schema = Avro::Schema.parse(SCHEMA)
writer = Avro::IO::DatumWriter.new(schema)
dw = Avro::DataFile::Writer.new(file, writer, schema)
dw << {"username" => "john", "age" => 25, "verified" => true}
dw << {"username" => "ryan", "age" => 23, "verified" => false}
dw.close

【问题讨论】:

    标签: avro


    【解决方案1】:

    我确实弄清楚了如何使用 appendTo 方法在 Java 中做到这一点:

    DatumWriter writer = new ReflectDatumWriter(Record.class);
    DataFileWriter file = new DataFileWriter(writer);
    file.setMeta("version", 1);
    file.setMeta("creator", "ThinkBigAnalytics");
    file.setCodec(CodecFactory.deflateCodec(5));
    //file.create(schema, new File("/tmp/records"));
    file.appendTo(new File("/tmp/records"));
    

    不过,我很想用 Ruby 来做。

    【讨论】:

      【解决方案2】:

      不要传递架构以附加到文件

      【讨论】:

        猜你喜欢
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-02
        • 1970-01-01
        相关资源
        最近更新 更多