Scala 序列化链接哈希映射kryo

Scala 序列化链接哈希映射kryo,scala,serialization,linkedhashmap,kryo,Scala,Serialization,Linkedhashmap,Kryo,我在spark项目中使用kryo序列化程序作为序列化程序,并用scala编写。我注册了我在项目中使用的所有类,有一个类不是序列化的,也不是理想化的,它是链接的哈希映射。 链接哈希映射注册: register(scala.collection.mutable.linkedHashMap[\u0,\u0]) 我从elastic获取数据,运行时属性类型为linkedHashMap。 例如,文档看起来是这样的:person{age:20,name:“yarden”},映射到linkedHashMap[S

我在spark项目中使用kryo序列化程序作为序列化程序,并用scala编写。我注册了我在项目中使用的所有类,有一个类不是序列化的,也不是理想化的,它是链接的哈希映射。 链接哈希映射注册:

register(scala.collection.mutable.linkedHashMap[\u0,\u0])

我从elastic获取数据,运行时属性类型为linkedHashMap。 例如,文档看起来是这样的:person{age:20,name:“yarden”},映射到linkedHashMap[String,Any],以及person中是否有其他对象等

当我想要反序列化存储为linkedHashMap(例如CollectRDD)的数据时,结果只是空对象

我尝试使用MapSerializer(register函数中的另一个参数),但失败了,因为它是用于java linkedHashMap的。 我试图为scala linkedHashMap搜索合适的序列化程序,但没有找到。 有一个解决方案,每次我得到一个LinkedHashMap转换成地图,这是工作,但这不是一个好的做法。 我想也许有一种方法可以使运行时类型为map而不是linkedHashMap,但我没有找到任何解决方案

我相信最好的做法是找到适合scala linkedHashMap的序列化程序,但我没有找到任何


我没有成功解决的问题的任何解决方案都将受到欢迎。

尝试使用TraversibleSerializer

例如:

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