使用Flume-KafkaSource实时采集avro格式数据

本文介绍了如何使用Flume-KafkaSource实时采集Avro格式的数据,并面临了序列化、反序列化的挑战。尝试了通过Hive外部表、API读取和KafkaConsumer参数设置等方式,最终通过自定义Source解决,将KafkaConsumer返回的record类型转换为JSON,成功实现了Avro数据的反序列化和存储。
摘要由CSDN通过智能技术生成

业务描述:

最近项目中需要实时采集业务数据库CDC数据(这里数据已被序列化为avro格式数据),这里技术架构我们采用了Flume+Hdfs。

了解Flume的朋友都知道它的组件分为三部分:source,channel,sink。具体原理部分这里就不再赘述,可查看官网或flume技术博客,这里具体讲一下实现流程及添坑之路。

业务过来的数据放在在kafka里,所以source端采用的是kafkaSource,说白了就是kafkaConsumer,sink选用的是hdfsSink,channel这里选的是file type。

hdfsSink写入文件格式有两种一是:Text File,二是Sequence File,不管选用哪种文件格式落地到hdfs后都不能直接使用,前面说到了业务数据已被序列化为avro格式,但需求是hdfs上的数据必须是直接可用的。

考虑了几种解决方式:

1,使用hive创建外部表关联hdfs上的数据,这里就有问题了,虽然hive支持读取seq文件格式,但我们这里seq文件里(hdfsSink使用Sequence File格式存储)的数据是avro的格式,我试着建表查询了一下,结果是乱码,text File也一样,这种方式就pass掉了。其实hive可以直接读取avro格式数据指定数据的sc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值