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

44、Flink 的 Interval Join 详解

Interval Join

Interval join 组合元素的条件为:两个流(暂时称为 A 和 B)中 key 相同且 B 中元素的 timestamp 处于 A 中元素 timestamp 的一定范围内,即 b.timestamp ∈ [a.timestamp + lowerBound; a.timestamp + upperBound]a.timestamp + lowerBound <= b.timestamp <= a.timestamp + upperBound

这里的 a 和 b 为 A 和 B 中共享相同 key 的元素,上界和下界可正可负,只要下界永远小于等于上界即可,Interval join 目前仅执行 inner join

当一对元素被传递给 ProcessJoinFunction,他们的 timestamp 会从两个元素的 timestamp 中取最大值 (timestamp 可以通过 ProcessJoinFunction.Context 访问)。

Interval join 目前仅支持 event time。

在这里插入图片描述

上例中,join 了橙色和绿色两个流,join 的条件是:以 -2 毫秒为下界、+1 毫秒为上界。

默认情况下,上下界也被包括在区间内,但 .lowerBoundExclusive().upperBoundExclusive() 可以将它们排除在外。

图中三角形所表示的条件也可以写成更加正式的表达式:

orangeElem.ts + lowerBound <= greenElem.ts <= orangeElem.ts + upperBound

代码示例

import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.streaming.api.functions.co.ProcessJoinFunction;
import org.apache.flink.streaming.api.windowing.time.Time;...DataStream<Integer> orangeStream = ...;
DataStream<Integer> greenStream = ...;orangeStream.keyBy(<KeySelector>).intervalJoin(greenStream.keyBy(<KeySelector>)).between(Time.milliseconds(-2), Time.milliseconds(1)).process (new ProcessJoinFunction<Integer, Integer, String>(){@Overridepublic void processElement(Integer left, Integer right, Context ctx, Collector<String> out) {out.collect(left + "," + right);}});
http://www.lryc.cn/news/355990.html

相关文章:

  • H6246 60V降压3.3V稳压芯片 60V降压5V稳压芯片IC 60V降压12V稳压芯片
  • 【MySQL精通之路】查询优化器的使用(8)
  • Docker in Docker(DinD)原理与实践
  • 科技前沿:IDEA插件Translation v3.6 带来革命性更新,翻译和发音更智能!
  • 【并发小知识】
  • python将多个音频文件与一张图片合成视频
  • JavaEE:Servlet创建和使用及生命周期介绍
  • 【Python设计模式15】适配器模式
  • 【Python设计模式05】装饰模式
  • kafka 消费模式基础架构
  • nginx安装部署问题
  • 揭开Java序列化的神秘面纱(上)Serializable使用详解
  • 深度学习——自己的训练集——图像分类(CNN)
  • goimghdr,一个有趣的 Python 库!
  • 每小时电量的计算sql
  • 自动化您的任务——crewAI 初学者教程
  • K8s集群中的Pod调度约束亲和性与反亲和性
  • kafka之consumer参数auto.offset.reset
  • 回答篇二:测试开发高频面试题目
  • React18 apexcharts数据可视化之甜甜圈图
  • 如何通过OpenHarmony的音频模块实现录音变速功能?
  • 探索 Rust 语言的精髓:深入 Rust 标准库
  • Log360:护航安全,远离暗网风险
  • react使用antd警告:Warning: findDOMNode is deprecated in StrictMode.
  • Docker Swarm - 删除 worker 节点
  • AI视频智能分析技术赋能营业厅:智慧化管理与效率新突破
  • 骨折分类数据集1129张10类别
  • Follow Your Pose: Pose-Guided Text-to-Video Generation using Pose-Free Videos
  • 记录一次开源 MaxKey 安装部署
  • k8s基础命令