当前位置: 首页 > article >正文

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

业务场景

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

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

原实现方案

a.原方案内容

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

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

5cc1bff00ba1526b386c4470ebee4a28.jpeg

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

b.原方案缺陷

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

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

优化方案

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

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

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

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

86a8e3ee4e15bbdb3dfbb809a072814b.jpeg

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

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

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


http://www.kler.cn/a/428365.html

相关文章:

  • Java设计模式 十八 状态模式 (State Pattern)
  • 开源鸿蒙开发者社区记录
  • 详细介绍:Kubernetes(K8s)的技术架构(核心概念、调度和资源管理、安全性、持续集成与持续部署、网络和服务发现)
  • NodeJs如何做API接口单元测试? --【elpis全栈项目】
  • C++ 二叉搜索树
  • HTTP 配置与应用(不同网段)
  • Python 中的属性访问器是什么?如何使用 @property 装饰器?
  • 数据库原理实验实验四 统计查询和组合查询
  • windows安装使用conda
  • learn-(Uni-app)跨平台应用的框架
  • 2024-10-13-B fd 重定向 缓冲区
  • 链式设计及设计模式的应用
  • application.yml 和 bootstrap.yml
  • 坚果投影仪J10如何用苹果Siri开关机并和米家联动
  • 一、Origin绘制柱状图
  • 23种设计模式之解释器模式
  • 【PlantUML系列】状态图(六)
  • 2-2-18-14 QNX系统架构之 TCP/IP 网络
  • 保护数字资产:iOS 加固在当前安全环境中的重要性
  • ChatGPT Pro是什么
  • 【机器人】系统辨识之激励轨迹设计(傅里叶级数)
  • 原生微信小程序使用原子化tailwindcss
  • 阿里云负载均衡SLB实践
  • 在 Ubuntu 18.04 上使用 Snort 的完整攻略
  • LVGL9 开关控件 (lv_switch) 使用指南
  • java+ssm+mysql水产品商城