FlinkSQL流式关联Hbase大表方案(走二级索引)

该博客介绍了在实时数据开发中,如何使用FlinkSQL高效地关联Hbase大表。通过维护二级索引避免全表扫描,提高查询效率。首先消费Kafka数据,然后关联Hbase的索引表获取rowkey,再与数据表进行join操作,从而实现高性能的实时数据处理。代码示例展示了如何在Flink流中创建并操作相关表进行实时关联查询。

  我们在做实时数据开发的时候,通常要用spark、flink去消费kafka的数据,拿到数据流后会和外部数据库(Hbase、MySQL等)进行维表关联来把数据流打宽。当然了,有些外部数据库不只是存储维度数据,也会有很多事实数据,并且这些数据更新频繁,数据量巨大,但是我们的Flink流也会去实时的join这些巨大的事实表,这就需要选择一个合适的外部数据库作为支持,这个外部数据库一定要满足海量数据高效的读写性能,这样才能满足实时场景的需求,说到这,我们的目光自然而然的落到了Hbase上,来吧,我们直接上图,下面这张图就是以上所说场景的一个基本架构

那么问题来了,FlinkSQL如何去关联Hbase大表呢,如果关联字段不是hbase维表的rowkey那么将会触发全表扫描,如果这个表很大,全表扫描效率就很不乐观了,耗时少则几秒,多则无限延长,所以我们一定是要走hbase二级索引的,但是很遗憾,FlinkSQL里的Hbase connector不会处理索引,它要么scan,要么就get,那么我们该怎么办呢,别急,我们也有笨办法,那就是我们自己维护索引表,如果你还不懂hbase二级索引的实现方式请自行补充这方面知识,下面的内容就是有关二级索引的试用了,看图吧

 来,我描述一下上图的流程,首先消费到kafka数据后我们的流不能直接去join hbase的数据表而是要先去join索引表,这样就拿到了数据表的rowkey,然后我们再join数据表,这样就不会触发全表扫描了,而是通过rowkey查询,效率就一下子有了质的提升,那么代码是怎么实现呢?上案例!稍等,我先说一下这个案例,我们需要在Flink流中创建三个表:kafka表、hbas

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

头顶榴莲树

你的鼓励是我最大的动力~

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

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

打赏作者

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

抵扣说明:

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

余额充值