2016-10-05 9 views
1

Kryo 시리얼 라이저를 사용하여 특정 유형의 목록을 쓰려고하는데 읽기/쓰기를 시도 할 때 오류가 발생합니다. 내가 KryoRegistratorkryo 시리얼 라이저를 사용하여 특정 유형의 목록을 작성하는 방법

위해 아파치 스파크에 의해 제공되는 소스를 사용하고

나는 쓰기를 시도하고 목록 ArrayList에 또는 목록의 다른 유형이 될 수 타입 List<A>이다

코드

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()) 
     } 
    } 
} 

나는 무엇이다 여기 없습니까?

kryo.register(ArrayList.class); 

in read method use 
kryo.readObject(input, ArrayList.class); 

in write method use 
kryo.writeObject(output, entry.getArchivePortions()); 
:

답변

0

나는 Arraylist.class

코드를 등록하여이 작업을 얻을 수 있었다