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.mzph.cn/web/17812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 13 配置默认DN

需求&#xff1a; 如果存在用户配置的DNS服务器&#xff0c;则切面拦截运行商下发的DNS,替换为用户自己配置的DNS. 实现&#xff1a; 直接上代码&#xff1a; 1:TelephonyProperties 内新增属性保存用户设置的dns //QSSI.13/frameworks/base/telephony/java/com/android/in…

TCL华星揽获技术创新奖,创新能力与伙伴价值再获肯定

近日&#xff0c;以“拥抱AI共创美好”为主题的2024年联想全球供应商大会在深圳圆满举办&#xff0c;重磅分享联想战略愿景和目标。 TCL华星应邀设置品牌展区&#xff0c;携手机、IT等领域10余款前沿显示产品亮相会场&#xff0c;以先锋显示科技演绎联合共创的多元化场景。联想…

5-26作业

网络聊天室 服务器&#xff1a; 1 #include <myhead.h>2 int main(int argc, const char *argv[])3 {4 if(argc!3)5 {6 printf("请输入IP和端口号\n");7 return -1;8 }9 int sfd socket(AF_INET, SOCK_DGRAM, 0);10 if(…

MySQL数据库案例实战教程:数据类型、语法与高级查询详解

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

xss-labs之level9、level10

一、level9 1、测试分析 尝试了之前的payload&#xff0c;发现都不行&#xff0c;看源码发现多了个strpos函数&#xff0c; strpos() 是一个在 PHP 中用于查找子串首次出现位置的函数。它接受两个参数&#xff1a;要搜索的字符串&#xff08;主字符串&#xff09;和要查找的子…

AAAI2024 基于扩散模型 多类别 工业异常检测 DiAD

前言 本文分享一个基于扩散模型的多类别异常检测框架&#xff0c;用于检测工业场景的缺陷检测或异常检测。 设计SG语义引导网络&#xff0c;在重建过程中有效保持输入图像的语义信息&#xff0c;解决了LDM在多类别异常检测中的语义信息丢失问题。高效重建&#xff0c;通过在潜…

开源大模型与闭源大模型:谁将引领AI的未来?

前言 在AI领域&#xff0c;开源大模型和闭源大模型一直并存&#xff0c;各自有其独特的优势和挑战。下面&#xff0c;我们将从数据隐私、商业应用和社区参与三个方向&#xff0c;对这两种模型进行深入探讨。 一、数据隐私 开源大模型&#xff1a; 1. 透明度高&#xff1a; …

SSDReporter for Mac:守护您硬盘健康的守护者

SSDReporter for Mac是一款专为Mac用户设计的固态硬盘&#xff08;SSD&#xff09;健康状况检测工具。以下是关于这款软件的详细介绍&#xff1a; SSDReporter for Mac的主要功能是全面检测、监控Mac设备中SSD的工作状态&#xff0c;以确保数据的完整性和设备的稳定性。它能够…

【problem】解决EasyExcel导出日期数据显示为#####问题

前言 在使用EasyExcel进行数据导出时&#xff0c;你可能遇到日期或其他数据在Excel中显示为“#######”的情况&#xff0c;这通常是因为列宽不足以展示单元格内的全部内容。本文将指导你如何通过简单的步骤解决这一问题&#xff0c;并确保导出的Excel文件自动调整列宽或直接指…

文件传输服务应用1——java集成smb2/3实现文件共享方案详细教程和windows共享服务使用配置

在实际项目开发过程中&#xff0c;读取网络资源或者局域网内主机的文件是必要的操作和需求。而FTP&#xff08;文件传输协议&#xff09;和SMB&#xff08;服务器消息块&#xff09;是两种最为常见的文件传输协议。它们各自在文件传输领域拥有独特的优势和特点&#xff0c;但同…

汇编原理()二进制 跳转指令

一.二进制 two complement reprentation&#xff08;补码&#xff09; 二进制的运算&#xff1a; 6的二进制 0110 -6的二进制 如何表示&#xff1f; 四个bit的第一个bit表示符号&#xff1a;1负0正 -6表示为1010 解释&#xff1a; 0 0000 1 0001 -1 1111&#xff08;由 …

【学习笔记】TypeScript

TypeScript 1、介绍 1.1、概述 1.2、基本特点 1.3、优势 1.4、开发环境搭建2、基础 2.1、类型声明 2.2、配置相关 2.2.1 自动编译文件 2.2.2 配置文件 tsconfig.json 2.2.3 使用 webpack 打包 ts 代码 …

十种常用数据分析方法

描述性统计分析&#xff08;Descriptive Statistics&#xff09; 使用场景&#xff1a;用来总结数据的基本特征&#xff0c;如平均值、中位数、标准差等。 优势&#xff1a;简单易懂&#xff0c;快速总结数据。 劣势&#xff1a;无法深入挖掘数据的潜在关系。 模拟数据及示例…

7B2PRO5.4.2主题 wordpress主题开心版免授权源码

这款7B2 PRO主题也是很多小伙伴儿喜欢的一个主题&#xff0c;有伙伴儿反馈说想学习下新版本&#xff0c;这不就来了&#xff0c;免受权开心版本可供学习使用&#xff0c;要运营还是尊重下版权到官网进行购买吧。 下载&#xff1a;7B2PRO5.4.2 wordpress主题免授权直接安装_麦…

软件工程作业5

某培训机构入学管理系统有报名、交费和就读等多项功能&#xff0c;下面是对其各项功能的说明&#xff1a; 1、报名&#xff1a;由报名处负责&#xff0c;需要在学员登记表上进行报名登记,需要查询课程表让学员选报课程&#xff0c;学院所报课程将记录到学员选课表 2、交费&am…

vim方向键乱码

问题描述 有的docker容器使用的父镜像比较精简&#xff0c;安装的vim不带vimrc文件&#xff0c;只支持使用 h, j, k, l来进行方向键的移动。具体的历史背景是&#xff1a; 在 Vim 的前身 vi 编辑器开发时&#xff08;1976 年&#xff09;&#xff0c;很多终端并不具备现代键盘…

C#算数运算符

赋值运算符 符号&#xff1a; 先看右侧 再看左侧 将右侧的数据赋值给左侧的变量 使用方法: int num 5; 加 符号&#xff1a; 先计算 在赋值 右边两个值相加 赋值给左边 使用方法: int i 1 2; 减 符号&#xff1a;- 右边两个值相减 赋值给左边 使用方法: int i 4 -…

The First项目报告:解读ZK技术的跨链巨头Polyhedra Network

4 月 17 日&#xff0c;零知识证明&#xff08;ZK&#xff09;基础设施开发团队 Polyhedra Network与谷歌云达成战略合作&#xff0c;以响应 Web2 与 Web3 市场对于该技术日益增长的需求。双方将基于Polyhedra的尖端研究及专有算法通过谷歌云提供的零知识即服务向全球开发者开放…

JS-01基本介绍和数据类型

目录 1 JS基本介绍 2 数据类型 2.1 基本数据类型&#xff08;值类型&#xff09; 2.2 复杂数据类型&#xff08;引用类型&#xff09; 2.2 关于undefined类型 1 JS基本介绍 ## JS基本介绍 JS的用途&#xff1a;Javascript可以实现浏览器端、服务器端(nodejs)。。。 浏览器…

hexo静态博客 部署到xxx.github.io github 静态页

hexo安装 npm install hexo-cli -g hexo init blog cd blog npm install hexo server key配置 ssh-keygen -t ed25519 -C “emaile.com” 添加key到github err gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository. 配置GitHub仓…