1.说明
Kafka 是分布式消息订阅系统,有非常好的横向扩展性,可实时存储海量数据,是很常用的流数据处理中间件。物联网设备采集的数据很多时候就是通过 Kafka 进行处理的。当 Kafka 数据要入库分布式数据库 Greenplum 时,我们就需要考虑入库的效率和可靠性了。
VMware Tanzu™ Greenplum® Streaming Server 提供了 Loading Kafka Data into Greenplum
的工具,官网描述 You can use the gpsscli or gpkafka load utilities to load Kafka data into Greenplum Database.
这里描述的是使用 gpkafka 导入 Kafka 数据的方法。
官方组件在使用的过程中也是会有不少问题的,这里做个记录。
2.问题
2.1 offset gap detected
gpkafka load start job failed: Kafka job failed to prepare: setOffsetWithoutForce: history partition 0 offset: 12541777 out of range [13396513, 14191777]: offset gap detected
问题解决: 找到对应的入库表gpkafka_
保存的偏移量,我们可以看到结束endoffset
是12541777,而读取的kafka的最小偏移量已经是13396513了😄
处理办法是将12541777 改成 13396513
,重新启动入库脚本即可:
问题分析: 由于入库脚本报错,停了15天,但是kafka的消息保留时间为7天,所以offset gap detected
也是正常了。
2.2 如何重新录入数据
- 删除对应的gpkafka_表(消除偏移量记录);
- 重新启动入库脚本即可。