如何在Kryo中序列化特定对象

时间:2015-12-18 11:06:35

标签: java apache-spark kryo

我做了这样的Kryo测试,代码如下:

public class Some implements KryoSerializable {
    private static final long serialVersionUID = 8212888201641460871L;

    private static final RecordCodec lazyCodec = new RecordCodec();
    private Record record;

    public Record    get()         { return record; }
    public void      set(Record r) { record = r; }

    /* Kryo */
    @Override
    public void read(Kryo kryo, Input input) {
        lazyCodec.setInputStream(input);
        record = lazyCodec.decode();
    }
    @Override
    public void write(Kryo kryo, Output output) {
        final RecordCodec codec = new RecordCodec();
        codec.setOutputStream(output);
        codec.encode(record);
    }
}

我已经实现了KryoSerializable接口,代码如下:

RecordCodec

** write类用于压缩记录数据。

但我发现,中间输出文件比原始加载文件大得多! (加载文件:220m,中间输出文件:870m)我想如果Kryo调用Some类中的http://localhost/test/index.php/test_con方法,中间输出文件应该是大约300-400m,而不是870m。

所以我想问一下,如果Kryo会在特定的类中调用read和write方法吗?我认为它看起来并不紧凑,我是否犯了一些错误?

0 个答案:

没有答案