Flink如何基于数据版本使用最新离线数据

业务场景

假设批量有一张商户表,表字段中有商户名称和商户分类两个字段。

批量需要将最新的商户名称和分类的映射关系推到hbase供实时使用。

原实现方案

a.原方案内容

为解决批量晚批问题,批量推送hbase表时一份数据产生两类rowkey:T-1和T日两类。

即使批量晚批,也能用前一日推送的数据。

原文链接:实时离线融合计算的数据同步实践

b.原方案缺陷

如果2号的分区中有客户A,但是3号的分区中没有客户A。

但是原有方案会造一条客户号_3号的数据在hbase中,这种"假"数据不符合数据规范。

优化方案

准备两张hbase表,一张存放业务数据(数据表),一张存放数据版本日期(配置表)。

每次批量推送最新分区的业务数据到数据表后,向配置表插入一条此份数据的业务日期。

比如前一天向数据表中推送了主键rowkey为客户号_2号的业务数据后,将配置表的数据日期字段更新为2号。

同样今天向数据表推送完rowkey客户号_3号的业务数据后,将配置表的数据日期字段更新为3号。

实时使用数据表的时候,会取出配置表中的数据日期字段,再和客户号进行拼接作为查询数据表的字段即客户号_日期。

如果批量今日晚批没有将客户号_3号的业务数据送过来后,从在配置表中取出的数据日期为2号,再用客户号_2号作为主键查询数据表。

这样即使批量晚批,优化后的新方案中实时一直能使用数据表最新分区的数据,而且也没有原方案的"假"数据问题。

相关推荐
Hello.Reader1 小时前
Flink Standalone 本地一键起集群、Session/Application 两种模式、HA 高可用与排障清单
大数据·flink
3分钟秒懂大数据3 小时前
实时数仓实战篇一:长周期去重指标建设
大数据·数据仓库·面试·性能优化·flink
Hello.Reader5 小时前
Flink Java 版本兼容性与 JDK 模块化(Jigsaw)踩坑11 / 17 / 21 怎么选、怎么配、怎么稳
java·大数据·flink
康王有点困5 小时前
Flink部署模式
java·大数据·flink
Hello.Reader8 小时前
Flink Standalone 从 0 到可运维的 Session/HA 集群模板(附配置清单)
大数据·flink
Knight_AL8 小时前
Flink 状态管理详细总结:State 分类、Keyed State 实战、Operator State、TTL、状态后端选型
前端·数据库·flink
你才是臭弟弟9 小时前
Apache Flink+Apache Iceberg(协作关系)
大数据·flink·apache
Hello.Reader11 小时前
Flink Working Directory(FLIP-198)稳定本地恢复、RocksDB 目录与进程重启“不丢缓存”的正确姿势
spring·缓存·flink
Hello.Reader11 小时前
Flink 部署组件拆解、参考架构、Application vs Session 选型,以及生产落地 Checklist
大数据·架构·flink
青云交12 小时前
Java 大视界 -- 基于 Java+Flink 构建实时风控规则引擎:动态规则配置与热更新(446)
java·nacos·flink·规则引擎·aviator·实时风控·动态规则