第十九篇:Flink 如何做维表关联

本文介绍了在 Flink 中进行维度表关联的三种常见方法:实时查询维表、预加载全量数据和 LRU 缓存。实时查询直接访问外部数据库,适合小量数据但可能增加外部系统压力;预加载全量数据一次性加载到内存,适用于实时要求不高且维表数据量小的场景;LRU 缓存结合热点数据,提供了一种平衡实时性和性能的方案。文章还强调了异步 IO 在维表关联中的重要性,并提供了代码示例。
摘要由CSDN通过智能技术生成

你好,欢迎来到第 19 课时,本课时主要讲解 Flink 中如何进行维度表的关联。

在实际生产中,我们经常会有这样的需求,需要以原始数据流作为基础,然后关联大量的外部表来补充一些属性。例如,我们在订单数据中,希望能得到订单收货人所在省的名称,一般来说订单中会记录一个省的 ID,那么需要根据 ID 去查询外部的维度表补充省名称属性。

在 Flink 流式计算中,我们的一些维度属性一般存储在 MySQL/HBase/Redis 中,这些维表数据存在定时更新,需要我们根据业务进行关联。根据我们业务对维表数据关联的时效性要求,有以下几种解决方案:

  • 实时查询维表
  • 预加载全量数据
  • LRU 缓存
  • 其他

上述几种关联外部维表的方式几乎涵盖了我们所有的业务场景,下面针对这几种关联维表的方式和特点一一讲解它们的实现方式和注意事项。

实时查询维表

实时查询维表是指用户在 Flink 算子中直接访问外部数据库,比如用 MySQL 来进行关联,这种方式是同步方式,数据保证是最新的。但是,当我们的流计算数据过大,会对外部系统带来巨大的访问压力,一旦出现比如连接失败、线程池满等情况,由于我们是同步调用,所以一般会导致线程阻塞、Task 等待数据返回,影响整体任务的吞吐量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

王知无(import_bigdata)

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值