2016-06-16 8 views
1

저는 spark가있는 프로젝트에서 serializer로 kryo serializer를 사용하고 scala로 작성했습니다. 내 프로젝트에서 사용하는 모든 클래스를 등록하고 해시 맵과 연결된 직렬화 또는 비순환 화 클래스가 있습니다. 링크 해시 맵 등록 :링크 된 해시 맵을 직렬화하기

kryo.register (scala.collection.mutable.linkedHashMap [_, _])

I 탄성 내에서 데이터를 얻을 특성 런타임 유형의 LinkedHashMap이다. 예를 들어 person {age : 20, name : "yarden"}과 같은 문서의 경우 링크 된 HashMap [String, Any]에 매핑하고 다른 객체가있는 경우 등

Data를 deserialize하려는 경우 연결된 HashMap (예 : RDD 수집)으로 저장됩니다. 결과는 빈 개체입니다.

MapSerializer (레지스터 함수에서 다른 매개 변수)를 사용하려고 시도했지만 java linkedHashMap 때문에 실패했습니다. scala linkedHashMap에 적합한 serializer를 검색하려고했지만 찾지 못했습니다. LinkedHashMap을 Map으로 변환 할 때마다이를 해결할 수있는 해결책이 있습니다.하지만 작업이 잘되는 것은 아닙니다. 어쩌면 런타임 형식이지도가 아닌 linkedHashMap이 될 수있는 방법이 있다고 생각하지만 해결책을 찾지 못했습니다.

저는 최선의 방법은 scala의 linkedHashMap에 적합한 serializer를 찾지 만 어떤 것도 찾지 못했음을 믿습니다.

내가 해결하지 못했던 모든 해결책이 환영받을 것입니다.

답변

1

TraversibleSerializer를 사용해보십시오. 예를 들어

:

kryo.register(classOf[mutable.LinkedHashMap[Any, Any]], 
    new TraversableSerializer[(Any, Any), mutable.LinkedHashMap[Any, Any]](true))