confluent 对kafka格式化数据的处理

本文详细梳理了confluent在处理Kafka数据,特别是timestamp类型支持上的问题,探讨了数据变迁过程,包括Kafka Connect的数据流,以及convertMessages阶段的数据转换流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 说明

关注重点:confluent版本对timestamp等类型的支持基本是残的。本次梳理相关处理流程,并尝试修复该问题。

2. 看数据如何变迁

2.1 介绍几个类:
所属模块描述别名
org.apache.kafka.clients.consumer.ConsumerRecordsKafka表征从Kafka里面拖出来的数据-
org.apache.avro.SchemaAvro表征SchemaAvroSchema
org.apache.kafka.connect.data.SchemaKafka表征SchemaKafkaSchema
org.apache.kafka.connect.data.SchemaAndValueKafka表征带Schema的内容-
org.apache.kafka.connect.sink.SinkRecordkafka表征带Schema的Record(key+value)-
org.apache.avro.generic.GenericRecordAvro传给parquet模块发送的数据类-

说明:图中有两个类同名,于是自个给他们起了别名,这样也方面说明。

2.2 kafka connect的数据流

confluent数据流
说明:图中有两个SchemaAndValue, 分别表示key和value

2.3 过程划分

转化过程比较复杂,多个模块间的LIB调来调去的,分阶段进行描述:
依据org.apache.kafka.connect.runtime.WorkerSinkTask.java中poll方法的处理,可以分为两个阶段:

  1. convertMessages:数据从AvroSchema和ConsumerRecords到SinkRecord的过程;
  2. deliverMessages:数据从SinkRecord到GenericRecord的过程;

3. convertMessages

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值