当前位置:网站首页>Presto 中 lookUp Join的实现
Presto 中 lookUp Join的实现
2022-07-30 17:51:00 【王飞活】
一. 前言
Loopup Join顾名思义就是通过查找方式实现的Join,也即右边常驻内存,左表不断去内存里边loopup 看join条件是否相等来实现join操作。在presto中,常驻内存的表称为HashBuilder表,有HashBuilderOperator算子负责构造,不断去探测的表称为probe表,在LookupJoinOperator中实现probe表对HashBuilder表的探测和数据关联。
二. HashBuilder表的构造
构造表的时候,通过HashBuilderOperator将需要常驻内存的表读到内存中:
HashBuilderOperator::addInput
updateIndex
index.addPage
channels[i].add(block); // 所有数据都在channels中
读完表后:
HashBuilderOperator::finish
finishInput
buildLookupSource
index.createLookupSourceSupplier
return lookupSourceFactory.createLookupSourceSupplier(...valueAddresses, channels...) //将HashBuilder表的数据全部都放在LookupSource,LookupSource为LookupJoinOperator提供右表的数据的读取
state = State.LOOKUP_SOURCE_BUILT //HashBuilder表已经完成构造,LookupJoinOperator将开始工作三. LookupJoinOperator的探测
LookupJoinOperator的构造函数中的LookupSourceFactory可以得到HashBuilder表的所有数据
probe表的数据通过LookupJoinOperator::addInput 不断进来, 并加工成一个probe表
当下游通过getOutput取一批数据的时候:
LookupJoinOperator::getOutput
processProbe
processProbe(lookupSourceLease.getLookupSource()) //这里用到了HashBuilder表的数据了
joinCurrentPosition
pageBuilder.appendRow(probe, lookupSource, joinPosition) //2表相同数据的碰撞
outputPage = pageBuilder.build(probe)
Block[] blocks = new Block[probeOutputChannels.length + buildOutputChannelCount]; //实现了2表join边栏推荐
- 数据库系统原理与应用教程(069)—— MySQL 练习题:操作题 95-100(十三):分组查询与聚合函数的使用
- 2022鹏城杯web
- C陷阱与缺陷 第7章 可移植性缺陷 7.2 标识符名称的限制
- 基础架构之Mongo
- 这玩意儿都能优化?果然是细节都在魔鬼里。
- 高性能短链设计
- linux 安装mysql8.0 超详细教程(实战多次)
- 数据库系统原理与应用教程(063)—— MySQL 练习题:操作题 39-50(七):SELECT 基本语法联系
- Servo System of Hydraulic Steering Gear Based on Fuzzy PID
- 图解LeetCode——11. 盛最多水的容器(难度:中等)
猜你喜欢
随机推荐
记者卧底
沃尔沃中国的年中总结,在“安全感”中寻找未来
[Solved] The problem that Unity Hub fails to obtain a license or does not respond and cannot develop
Confluence OGNL注入漏洞复现(CVE-2022-26134)
LayaBox---TypeScript---类
MySQL【单行函数】
Web3时代重要基础设施深度拆解:4EVERLAND
ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)Solution
Insert data into MySQL in C language
PLSQL Developer安装和配置
分布式消息队列平滑迁移技术实战
C陷阱与缺陷 第7章 可移植性缺陷 7.2 标识符名称的限制
【HMS Core】【FAQ】运动健康、音频编辑、华为帐号服务 典型问题合集7
LayaBox---TypeScript---基础数据类型
This year..I sincerely recommend the professional engineer to upgrade to the book!
Mysql brush dirty several scenarios and related parameters
银行适用:此文能够突破你的运维流程管理问题
华为无线设备配置Mesh业务
莫队--优雅的暴力
Informatics Olympiad All-in-One 1966: [14NOIP Popularization Group] Scale Simplification | Luogu P2118 [NOIP2014 Popularization Group] Scale Simplification









