Hi, could you maybe write TypeInformation/TypeSerializer wrappers that lazily instantiate a type class-based serializer. It might even work using a "lazy val". Something like this:
class ScalaTypeSerializer[T] extends TypeSerializer[T] { lazy val serializer = "create the scala serializer" ... def serialize(value: T, out: DataOutputView): () = { serializer.serialize(value, out) // not sure how the generated serializers would be used, just a placeholder } } Cheers, Aljoscha On Thu, 23 Jun 2016 at 16:23 Stefano Baghino <stefano.bagh...@radicalbit.io> wrote: > Hello everybody, > > in the past days, I've written batch input/output formats for MongoDB. > > Initially, I've tried to use the non-blocking ReactiveMongo > <http://reactivemongo.org/> driver, which uses the type class pattern in > Scala for the serialization logic. The library also exposes some pretty > neat macros that automatically generate the type class instances for you, > given a case class. > > Now, the problem is that these macros are not useful in Flink because the > generated type class instances would have to be serializable (something > that has been understandably left out from the macros). Has anyone ever > faced a similar problem? I've encountered it again when using upickle > <http://www.lihaoyi.com/upickle-pprint/upickle/>, which has a similar > facility but for JSON serialization. > > In the end I've resorted to writing my own serialization logic and > explicitly extending java.util.Serializable in the end but I feel there may > be a way to not do this (without rewriting/extending the macros to make the > generated classes serializable). > > -- > BR, > Stefano Baghino > > Software Engineer @ Radicalbit >