1 .一种检测倾斜数据的Hash Join执行方法,其特征在于 ,其实现内容包括:
利用数据库的SQL引擎执行Hash Join之前,获取Join算子的两个输入数据集;
设定一个相对倾斜率,计算相对倾斜率与其中一个输入数据集中数据量的乘积,得到
倾斜阈值,两个输入数据集中出现频率超过倾斜阈值的值被称为倾斜值;
针对两个输入数据集,检查总数据量较大的输入数据集中是否存在倾斜值,
若不存在,则对两个输入数据集分别进行哈希分发,以将两个输入数据集拆分并分别
分发到Join节点集群中,
若存在,则探测总数据量较大的输入数据集在某个字段的所有倾斜值,得到倾斜值列
表,随后基于倾斜值列表将每个输入数据集拆分为不含倾斜值的Normal数据集和含有倾斜
值的Skew数据集,对Normal数据集进行哈希分发,以将Normal数据集拆分并分发到Join节
点集群中,对Skew数据集进行平均分发或镜像分发,以将Skew数据集进行拆分并平均分发
或复制后对应分发到Join节点集群的所有节点上;
Join节点集群中的节点对其上数据进行Hash Join计算。
2.根据权利要求1所述的一种检测倾斜数据的Hash Join执行方法,其特征在于,针对
两个输入数据集,将总数据量较大的输入数据集称为Big数据集,将总数据量较小的数据集
称为Small数据集。
3 .根据权利要求2所述的一种检测倾斜数据的Hash Join执行方法,其特征在于,计算
相对倾斜率与Big数据集中采样数据量的乘积,得到倾斜阈值,Big数据集和Small数据集中
出现频率超过倾斜阈值的值被称为倾斜值;
使用检查器检查Big数据集在某个字段是否存在倾斜值,若存在倾斜值,使用探测器统
计Big数据集在某个字段的所有倾斜值,得到倾斜值列表。
4 .根据权利要求3所述的一种检测倾斜数据的Hash Join执行方法,其特征在于,检查
器首先对Big数据集进行顺序采样,计算采样数据量与相对倾斜率得到倾斜阈值,随后检查
采样数据中是否存在倾斜值。
5 .根据权利要求3所述的一种检测倾斜数据的Hash Join执行方法,其特征在于,根据
倾斜值列表,将Big数据集中的所有倾斜值拆分到Skew 1数据集中,将Big数据集中的剩余
数据划分到Normal 1数据集中,同时,将Small数据集中的所有倾斜值拆分到Skew 2数据集
中,将Small数据集中的剩余数据划分到Normal 2数据集中;
使用hash router对Normal 1数据集和Normal 2数据集分别进行哈希分发 ,以将
Normal 1数据集和Normal 2数据集进行拆分并分别分发到Join节点集群中,使用average
router对Skew 1数据集进行平均分发,以将Skew 1数据集进行拆分并平均分发到Join节点
集群的所有节点上,使用mirror router对Skew 2数据集进行镜像分发,以将Skew 2数据集
复制成多份,并对应分发到Join节点集群的所有节点上。
6 .根据权利要求5所述的一种检测倾斜数据的Hash Join执行方法,其特征在于,使用
hash router对Normal 1数据集和Normal 2数据集分别进行哈希分发时,对Normal 1数据
集和Normal 2数据集中的某些字段使用相同的散列函数进行计算,根据计算结果将Normal
1数据集和Normal 2数据集分别拆分成多个子集,Normal 1数据集的多个子集和Normal 2
数据集的多个子集被分别分发到Join节点集群的对应节点上。
7 .根据权利要求6所述的一种检测倾斜数据的Hash Join执行方法,其特征在于,使用
权 利 要 求 书
1/2 页
2
评论