让播放json读取可序列化

时间:2015-08-24 15:11:37

标签: json serialization apache-spark playframework-2.0 typeclass

因为我正在使用spark,并且因为我认为播放json lib很方便,所以我尝试用这个lib在spark中解析json。

我希望有一个像

这样的通用RDD转换
def parse[T: Reads](source : RDD[String]) = RDD[T] {
  source.map(s => Json.parse(s).validate[T] ).collect{
    case JsSuccess(event,_) => event
  }
}

但正如您所看到的那样,隐含的Reads是给予worker的,而且它不是可序列化的。

我尝试用

包装Reads

val serializableReads = () => implicity[Reads]

(因为fn默认是可序列化的)

或者在一个扩展可序列化的类中包装Read。

但我无法让它发挥作用。 任何人都知道如果没有要求玩dev开发那些可序列化的类是否可行?

1 个答案:

答案 0 :(得分:1)

我经历过同样的事情,暂时没有办法。 我们最终使用Dataframe来管理json。但是如果你需要一些更具体的我建议json4s-jackson应该是处理json的spark的内部库,所以它应该是可序列化的。