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>(){

        @Override
        public void processElement(Integer left, Integer right, Context ctx, Collector<String> out) {
            out.collect(left + "," + right);
        }
    });
相关推荐
塔能物联运维16 分钟前
不止降温,更能控温|两相液冷重构高密度算力热管理新模式
大数据
Francek Chen24 分钟前
【大数据存储与管理】云数据库:03 云数据库系统架构
大数据·数据库·分布式·架构
pearbing27 分钟前
B站搜索流量突围:关键词精准布局,打造高适配SEO运营体系
大数据·b站·b站关键词排名·b站排名优化·b站seo·b站搜索优化
互联网科技看点29 分钟前
2026年,园世Yuansea:以专业之名,重塑运动音频边界
大数据·人工智能·音视频
金融小师妹38 分钟前
基于AI通胀风险识别模型与联储决策框架的政策分歧研究:鹰派权重上升后的全球流动性再定价分析
大数据·深度学习·逻辑回归·线性回归
Gofarlic_OMS1 小时前
Mastercam浮动许可利用率低:软件许可浪费,回收再分配
java·大数据·开发语言·架构·制造
维双云1 小时前
搭建商城型小程序,具备预约挂号功能,供医院使用,该怎么做?
大数据
云栖梦泽在1 小时前
AI安全实战:AI供应链安全防护的实战案例
大数据·人工智能·安全
weelinking1 小时前
2026年三大主流大模型深度对比:GPT-5.5、Claude 4.6与DeepSeek V4谁更值得选择?
java·大数据·人工智能·git·python·gpt·github
想ai抽1 小时前
Kylin 全局字典机制与 StarRocks Bitmap 精确去重技术调研
大数据·starrocks·kylin