从构建到使用,openLooKeng 如何实现 Hash Join ?

本文详细介绍了openLooKeng中Hash Join的实现原理,包括数据分区、Hash Table构建和使用。文章首先概述了openLooKeng支持的Join类型,然后重点讨论了Hash Join,讲解了build侧数据partition、Hash Join类图以及Hash Table的构建和使用过程。通过实例解释了Hash Table的存储结构和冲突解决方法。最后,文章提到Lookup Join的更多细节将在后续文章中继续探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hash Join是在进行多表连接时常用的方式之一。那如何在openLooKeng上构建并实现Hash Join?openLooKeng支持的Join类型有哪些?本期,社区小伙伴将分享[openLooKeng Hash Join 实现原理],从构建到使用,内容十分详细,希望对大家有帮助。


1 openLooKeng Join概述

为了更好的介绍join,我们创建两个非常简单的表t1和t2。执行的SQL语句如下:

create table t1(id bigint, value bigint);insert into t1 values(1, 11);insert into t1 values(2, 22);insert into t1 values(3, 33);insert into t1 values(4, 44);

create table t2(id bigint, value bigint);insert into t2 values(1, 111);insert into t2 values(2, 11);insert into t2 values(3, 333);insert into t2 values(4, 33);

openLooKeng的join有四类:
1) Lookup Join
大部分类型的Join都由Lookup Join完成。例如我们执行SQL语句如下:
select * from t1 inner join t2 on t1.value=t2.value;

其中,执行join所在stage涉及算子如下图所示:

▲ 图1-1 Lookup Join

完成Join的算子是HashBuilderOperator和LookupJoinOperator。而本文即将介绍Hash Join的原理,也就是这两个算子的实现原理。

2) Nested Loop Join
执行SQL语句“select * from t1 join t2 on t1.value > t2.value;”,join所在stage涉及算子如下图所示,其中完成Join的算子是NestedLoopBuilderOperator和NestedLoopJoinOperator。

▲图1-2 Nested Loop Join

3) Hash Semi Join
执行SQL语句“select * from t1 where value in (select value from t2);”,join所在stage涉及算子如下图所示,其中完成join的算子是SetBuilderOperator和HashSemiJoinOpe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值