1. Lookup Join

  • 用途:用于流表与外部维表(静态或缓慢变化表)的关联(如 MySQL、HBase 等)。

  • 特点

    • 通过 实时查询外部存储 获取维度数据。

    • 仅支持 处理时间(Processing Time)语义,无法关联历史版本。

    • 结果会随维表数据更新而变化(如维表更新,后续关联结果可能不同)。

  • 示例

    sql

    SELECT o.order_id, o.user_id, u.user_name
    FROM Orders AS o
    JOIN Users FOR SYSTEM_TIME AS OF o.proc_time AS u
    ON o.user_id = u.user_id;

2. Regular Join(流式无限 Join)

  • 用途两条流的普通 Join,无时间约束,匹配所有历史数据。

  • 特点

    • 输出结果会持续更新(可能因迟到数据反复触发)。

    • 需要保留双流完整状态(可能导致状态无限增长)。

    • 支持 事件时间(Event Time)和处理时间

  • 适用场景:需要精确匹配所有历史数据的场景(如用户行为链路分析)。

  • 风险:状态管理复杂,需设置 TTL 避免 OOM。


3. Interval Join(时间区间 Join)

  • 用途:两条流在特定时间范围内的 Join。

  • 特点

    • 通过 时间区间约束(如 BETWEEN lower_bound AND upper_bound)限制状态保留量。

    • 仅输出时间范围内匹配的数据,状态自动清理

    • 支持 事件时间和处理时间

  • 示例

    sql

    SELECT o.order_id, s.shipment_id
    FROM Orders o
    JOIN Shipments s
    ON o.order_id = s.order_id
    AND s.ship_time BETWEEN o.order_time - INTERVAL '1' HOUR AND o.order_time + INTERVAL '1' HOUR;

4. Temporal Table Join(时态表 Join)

  • 用途:关联 版本化表(如带版本信息的维表)。

  • 特点

    • 支持 事件时间语义,可关联维表的历史版本。

    • 维表需定义时间属性字段(如版本时间或生效时间)。

    • 与 Lookup Join 的区别:Lookup Join 查最新数据,Temporal Join 按时间戳匹配历史版本。

  • 示例

    sql

    SELECT o.order_id, r.currency_rate
    FROM Orders o
    JOIN Rates FOR SYSTEM_TIME AS OF o.order_time AS r
    ON o.currency = r.currency;

5. Window Join(窗口 Join)

  • 用途:在 窗口(如滚动、滑动、会话窗口) 内关联两条流。

  • 特点

    • 输出窗口结束时触发计算,仅输出一次结果(不更新)。

    • 状态按窗口自动清理。

    • 支持 事件时间和处理时间

  • 示例

    sql

    SELECT a.user_id, COUNT(b.order_id)
    FROM UserActions a
    JOIN Orders b
    ON a.user_id = b.user_id
    AND TUMBLE(a.event_time, INTERVAL '5' MINUTE) = TUMBLE(b.order_time, INTERVAL '5' MINUTE)
    GROUP BY a.user_id, TUMBLE(a.event_time, INTERVAL '5' MINUTE);

区别与联系总结

Join 类型输入类型时间约束状态管理适用场景
Lookup Join流 + 外部表处理时间无状态实时维表查询(如 MySQL 数据)
Regular Join流 + 流无约束无限状态(需 TTL)精确历史匹配(风险高)
Interval Join流 + 流相对时间区间按区间清理有时间范围的流关联(如订单物流)
Temporal Join流 + 版本化表事件时间按版本保留关联维表历史版本(如汇率变化)
Window Join流 + 流窗口绝对时间按窗口清理窗口聚合统计(如 5 分钟订单行为)

如何选择?

  • 需要外部维表 → Lookup Join(最新数据)或 Temporal Join(历史版本)。

  • 无时间约束的流流 Join → Regular Join(慎用,需 TTL)。

  • 有时间范围的流流 Join → Interval Join 或 Window Join。

  • 窗口聚合 → Window Join。

通过合理选择 Join 类型,可平衡计算延迟、状态管理和业务需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92533.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92533.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92533.shtml

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

相关文章

【FileZilla】基于 FTP 的 Windows 和 Linux 文件传输

在嵌入式开发过程中我们经常需要在 Windows 和 Linux 下进行文件传输,本文就介绍一种通过 FTP 实现 Windows 和 Linux 文件传输的方法。 Windows 为物理主机,Linux 是在 Vmware 虚拟机中安装运行的 Ubuntu,版本为 18.04。 Ubuntu 安装 FTP …

【GPT入门】第42课 ollama安装与运行llama3模型

【GPT入门】第42课 ollama安装与运行llama3模型1. 安装ollama2.运行模型3.测试模型3.1 直接在命令行交互3.2 openai接口1. 安装ollama https://ollama.com/ 选download, 选linux 执行安装命令: curl -fsSL https://ollama.com/install.sh | sh2.运行模型 启动服…

Lua语言元表、协同程序

元表元表的定义允许我们改变table的行为。setmetatable(普通表,元表)-- 元表a {"a","b","c"} -- 普通表 b {} --元表c setmetatable(a,b)print("------------------------")f {}print("f:",f)d setmetatabl…

[已解决]VSCode右键菜单消失恢复

前言 莫名其妙,好似VSCode自动更新以后,右键菜单就失效了,重装也无果. 手动搞一个吧 保存下面代码到桌面修复VSCODE右键菜单.reg,双击运行即可. Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode]"使用 VSCode 打开""…

什么是浏览器标识?

浏览器标识 层面一:网络层指纹 (HTTP/TLS) 这是最基础的指纹,即使不用浏览器,只用Go的 net/http 发请求也会留下。HTTP Headers (请求头): User-Agent: 最著名的标识,声明自己是什么浏览器。很容易伪造,但也很容易被识…

五十八、【Linux系统nginx服务】nginx代理服务器、nginx优化

Nginx代理技术全景图 #mermaid-svg-0dRktnHYPXypO9xB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0dRktnHYPXypO9xB .error-icon{fill:#552222;}#mermaid-svg-0dRktnHYPXypO9xB .error-text{fill:#552222;stroke…

[0CTF 2016]piapiapia

usernamepassword回显推断admin123Invalid user name or passwordadmin123Invalid user name or passwordadmin123Invalid user name or passworda123Invalid user name说明username是adminadmin1Invalid password这很奇怪了admin0200?admin11Invalid user name or …

人工智能系列(7)人工神经网络中的无监督学习

一. 无监督学习简介神经网络的一个关键属性是能够从环境中学习,并在不断学习的过程中持续改善性能。在无监督学习(又称自组织学习,self-organized learning)中,网络无需外部教师提供目标输出,而是通过对输入…

250810-OpenWebUI集成Dify应用

A. 最终效果 B. 环境配置 配置并启动Open-WebUI 随后浏览器访问:http://localhost:8080 pip install open-webui open-webui serve配置并启动Pipelines Pipelines默认占用80端口相比于Docker的启动方式,可以在相同的命令行中,查看pipelines …

day22|学习前端ts语言

抽象类,继承。不能创造实例class类:属性声明,构造器,方法,实例继承super()override重写父类继承的方法声明提升(hoisting)同一个js作用域内部,编译阶段把函数…

【网络安全】CTF——[网鼎杯2018]Unfinish-SQL注入-二次注入

目录 一、前言 二、环境 三、复现 3.1寻找注入点 3.2尝试盲注 3.3正则限制 3.4脚本注入获取flag 四、总结 一、前言 前两天复现了一道CTF题目[网鼎杯 2018]Comment,今天继续来学习一下SQL二次注入。 二、环境 BUUCTF在线评测 三、…

【langchain】如何给langchain提issue和提pull request?

什么是issue? 可以这么理解,bug是issue的子集。issue可以包含bug\feature\sercurity and others. https://github.com/langchain-ai/langchain/issues/32484 什么是pull request? 其实我真不是很理解,但不妨我来提pr https://github.com/langchain-ai/…

MySQL的存储引擎:

目录 InooDB引擎: MyISAM引擎: InooDB引擎与MyISAM存储引擎的区别: Archive引擎: Blackhole引擎: CSV引擎: Memory引擎: Federated引擎: Merge引擎: NDB引擎&a…

Mock与Stub

一、核心概念与差异对比特性MockStub核心目的验证对象间的交互行为提供预定义的固定响应验证重点方法调用次数、参数、顺序不关注调用过程,只关注结果行为模拟可编程的智能模拟静态的简单响应适用场景验证协作关系隔离依赖、提供固定数据复杂性较高(需要…

香港服务器容器网络插件的多节点通信性能基准测试

香港服务器容器网络插件的多节点通信性能基准测试在云计算和容器化技术快速发展的今天,香港服务器因其优越的地理位置和网络环境,成为众多企业部署容器服务的首选。本文将深入探讨香港服务器环境下容器网络插件的多节点通信性能,通过详实的基…

Vue3 学习教程,从入门到精通,Vue 3 全局 API 语法知识点及案例详解(32)

Vue 3 全局 API 语法知识点及案例详解 Vue 3 提供了丰富的全局 API,用于创建应用实例、注册全局组件、指令、插件等。以下将详细介绍 Vue 3 的主要全局 API,并结合详细的案例代码进行说明。每个案例代码都包含中文注释,帮助初学者更好地理解…

UE5多人MOBA+GAS 41、制作一个飞弹,添加准心索敌

文章目录添加新角色(不写了)创建一个发射技能创建一个飞弹类添加击中特效添加准星UI获取瞄准目标添加新角色(不写了) 将原本的机器人蓝图改为BP_PlayerCharacter,以此创建子蓝图 创建动画蓝图模板(具体就…

解决渲染抖动与滚动锚点定位不准确问题的方法与经验分享

场景描述:React 虚拟列表(Virtualized List)是当我们在处理大列表时,为了提升性能而采用的一种技术。然而在实现过程中,可能会遇到渲染抖动问题以及滚动锚点定位不准确的问题。  解决方案:React虚拟列表实…

OpenAI 时隔多年再开源!GPT-OSS 120B/20B 发布,支持本地部署,消费级 GPU 即可运行

OpenAI 近期做出了一项令人瞩目的战略转变:宣布推出两款开放权重(Open Weight) 语言模型 GPT-OSS-120B 和 GPT-OSS-20B。这不仅是其自 GPT-2 之后首次开源模型,更关键的是,这两款模型特别针对消费级硬件进行了深度优化…

MySQL高可用方案之MySQL Group Replication高可用架构搭建完全指南

MySQL Group Replication高可用架构搭建完全指南 前言 在当今互联网应用中,数据库高可用性已成为系统设计的核心需求。MySQL作为最流行的开源关系型数据库之一,其高可用解决方案备受关注。MySQL Group Replication是MySQL官方推出的原生高可用解决方案,它基于Paxos协议实现…