因为我正在使用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开发那些可序列化的类是否可行?
答案 0 :(得分:1)
我经历过同样的事情,暂时没有办法。 我们最终使用Dataframe来管理json。但是如果你需要一些更具体的我建议json4s-jackson应该是处理json的spark的内部库,所以它应该是可序列化的。