实时的join分类

本文介绍了实时join的三种主要类型:Window Join、Interval Join和Regular Join。Window Join利用时间窗口进行关联,但存在时效性和关联丢失的问题;Interval Join强调准确性,通过Watermark机制处理,但时效性不佳;Regular Join借助Flink Table的回撤重发,实现即时结果,但需面对回撤放大和状态管理挑战。各种方案各有优缺点,适用于不同的实时处理场景。
摘要由CSDN通过智能技术生成

实时的join分类

最直观的想法,无界变有界:Window Join

原理

利用 Flink 时间窗口机制
只考虑在同一个时间窗口内的数据进行关联

存在的问题

  • 1.窗口边界上的数据关联失败, 比如:10:59 的曝光,11:01 的点击,互相关联不上

  • 2.时效性差,窗口结束才触发计算和下发

在这里插入图片描述

准确性优先:Interval Join

原理

利用 Flink 的 Watermark 机制,当前侧的点,关联对侧的时间区间

存在的问题

  • 1.时效性较差,Outer 补 null 的数据要等区间结束才下发
  • 2.状态过期逻辑需额外处理(在过期时补 null 下发)

在这里插入图片描述

时效性优先:Regular Join(Streaming Join)

原理

利用 Flink Table 的回撤重发机制

  • 1.每条数据与对侧当前已到达的所有数据关联,得到的都是“当下”的正确结果

存在的问题

  • 1.准确”是暂时的,下发的并不是最终结果
  • 2.回撤重发机制导致数据量放大
  • 3.依赖全局的状态清理策略(TTL)

在这里插入图片描述

综合比较

  • 没有完美方案
  • 不同场景下需要做不同取舍
  • 不同的取舍下有不同的优化方案

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值