Flink实战系列-通用的反序列化类把 JSON 转成 POJO 对象

 

背景 & 痛点

1, Flink 在消费到 kafka 的数据后,我们经常会把数据转成 POJO 对象,方便后面对数据的处理,但是每个人 POJO 类型是不一样的,每次都需要新开发一个反序列化的类,这样会带来大量的重复代码.能不能实现一个通用的反序列类来解决这个问题?

2, 如何获取到 kafka 的元数据信息? 比如我有这样的需求,一个 Flink 任务消费了多个 topic 的数据后面要根据不同的 topic 名称做不同的处理逻辑,再比如我需要获取到数据写入 kafka 的时间戳,做全链路的延迟监控.那该如何获取数据写入 kafka 的时间戳?

解决方案

我们可以利用 java 的泛型实现 KafkaDeserializationSchema 这个接口从而实现一个通用的泛型类来解决这个问题.

KafkaDeserializationSchema 源码

@PublicEvolving
public interface KafkaDeserializationSchema<T> extends Serializable, ResultTypeQueryable<T> {

 /**
  * Initialization method for the schema. It is called before the actual working methods
  * {@link #deserialize} and thus suitable for one time setup work.
  *
  * <p>The provided {@link DeserializationSchema.InitializationContext} can be used to access additional features such as e.g.
  * registering user metrics.
  *
  * @param context Contextual information that can be used durin

猜你喜欢

转载自blog.csdn.net/xianpanjia4616/article/details/112970428
今日推荐