Hey Lasse,
I've had a similar case, albeit with Avro. I was reading from multiple
Kafka topics, which all had different objects and did some metadata
driven operations on them.
I could not go with any concrete predefined types for them, because
there were hundreds of different object types.

My solution was to serialize the object itself manually as byte[] and
deserialize it manually in operator.
You can do it the same way using something like
objectMapper.writeValueAsBytes and transfer data as Tuple2<String,
byte[]>.

Overall, Flink does not support "dynamic" data types very well.

Regards,
Maciej

śr., 24 lut 2021 o 17:08 Lasse Nedergaard
<lassenedergaardfl...@gmail.com> napisał(a):
>
> Hi
>
> I’m looking for advice for the best and simplest solution to handle JSON in 
> Flink.
>
> Our system is data driven and based on JSON. As the structure isn’t static 
> mapping it to POJO isn’t an option I therefore transfer ObjectNode and / or 
> ArrayNode between operators either in Tuples
> Tuple2<String, ObjecNode> or as attributes in POJO’s.
>
> Flink doesn’t know about Jackson objects and therefore fail back to Kryo
>
> I see two options.
> 1. Add kryo serialisation objects for all the Jackson types we use and 
> register them.
> 2. Add Jackson objects as Flink types.
>
> I guess option 2 perform best, but it require an annotation for the classes 
> and I can’t do that for 3. Party objects. One workaround could be to create 
> my own objects that extends the Jackson objects and use them between 
> operators.
>
> I can’t be the first to solve this problem so I like to hear what the 
> community suggests.
>
> Med venlig hilsen / Best regards
> Lasse Nedergaard
>

Reply via email to