我正在尝试使用Kryo序列化程序编写特定类型的列表,但是当我尝试读取/写入时我遇到错误。我正在使用apache spark为KryoRegistrator提供的源代码
我尝试编写的列表是List<A>
类型,可以是ArrayList或任何其他类型的列表
代码
Class FakeRegsitrator implements KryoRegistrator{
@Override
public void registerClasses(Kryo kryo) {
CollectionSerializer listSerializer = new CollectionSerializer();
listSerializer.setElementClass(A.class, kryo.getSerializer(A.class));
listSerializer.setElementsCanBeNull(false);
kryo.register(A.class, new Serializer<A>(true, true) {
public void write(Kryo kryo, Output output, A a) {
output.writeLong(a.getFieldA)
output.WriteString(a.getFieldB)
}
public A read(Kryo kryo, Input input, Class type) {
return new A(input.readLong(), input.readString())
}
}
}
我在这里缺少什么?
答案 0 :(得分:0)
我能够通过注册Arraylist.class
来使其工作代码:
kryo.register(ArrayList.class);
in read method use
kryo.readObject(input, ArrayList.class);
in write method use
kryo.writeObject(output, entry.getArchivePortions());