flink维度关联实现方式

在实时数仓中,维度表的建模方式通常是采用雪花模型,而非离线数仓的星型模型。
这是因为离线数仓的维度数据每日全量存储在HDFS中,每日全量关联一次即可。
而实时数仓假如也这样全量关联的话,每一张维度表的数据变化都需要关联维度表的历史数据,历史数据如何获取是个问题。
因此,在实时数仓中,我们不再对业务数据库中的维度表进行合并,仅对一些不需要的字段进行过滤,然后将维度数据写入 HBase 的维度表中,业务数据库的维度表和 HBase 的维度表是一一对应的。

事实表和维度表的关联,使用flink sql时,采用lookup join进行维度表的关联。
在使用flink api时,直接访问外部存储去获得维度数据然后补充到事实表。
这里关于维表表外部存储到选型,建议选用HBase,因为维度关联一般使用主键关联,所以kv类型数据库比较合适,HBase在查询性能,存储能力和性价比上都比较合适。如果维度数据比较少,也可以选择redis。

实际上,最好的方式是Hbase+Redis结合使用。由于flink是流式处理,如果每条数据都去访问Hbase,flink的处理性能不会太好,所以建议使用缓存,将热数据缓存在redis中是一种不错的方式。
如果缓存的方式,flink程序性能还是不够好的话,可以使用flink提供的异步IO功能,用异步的方式去访问HBase和Redis,此时流中的数据可以异步的与外部系统进行交互。注意,访问外部系统的连接要使用支持异步的客户端连接。

Flink关联Hbase大表可以通过自己维护索引表的方式实现。由于FlinkSQL的Hbase connector不会处理索引,我们可以在Hbase中创建一个索引表,将需要关联的字段作为索引,并将索引表与原始表进行关联。这样,在查询时可以通过索引表快速定位到需要的数据,而不需要进行全表扫描。\[1\] 另外,在开发Flink时,我们可以将固定的维度信息存储在Hbase或者Redis等第三方库中,以便与流进行关联查询输出。可以通过本地搭建一个Hbase环境,并构建一个Hbase公共调用类和异步调用Hbase的公共代码来实现这一功能。\[2\] 在异步IO访问Hbase时,可以编写一个工具类,通过继承RichAsyncFunction抽象类来实现异步IO操作。该工具类可以根据传入的rowKey来查询Hbase某个表的数据,并返回查询结果集。\[3\]这样,我们就可以在Flink中使用该工具类来实现与Hbase的关联操作。 #### 引用[.reference_title] - *1* [FlinkSQL流式关联Hbase大表方案(走二级索引)](https://blog.csdn.net/qq_32068809/article/details/122862330)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Flink查询关联Hbase输出](https://blog.csdn.net/Aaron_ch/article/details/123113871)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值