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

本文介绍了如何通过泛型实现一个通用的Flink反序列化类,将Kafka中的JSON数据转换为POJO对象。文章讨论了背景与痛点,如避免重复编写反序列化类,并探讨了如何获取Kafka的元数据信息,特别是数据写入时间戳。通过实现KafkaDeserializationSchema接口并理解ConsumerRecord源码,作者提供了具体实现方案,并在Flink中展示了使用方式。
摘要由CSDN通过智能技术生成

 

背景 & 痛点

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 De
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JasonLee实时计算

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值