数据倾斜的处理方法、系统、电子设备和介质技术方案

技术编号:26342395 阅读:15 留言:0更新日期:2020-11-13 20:33
本发明专利技术公开了一种数据倾斜的处理方法、系统、电子设备和介质,其中数据倾斜的处理方法,包括以下步骤:获取倾斜的键值;将倾斜的键值与一随机数拼接以得到拼接键值;根据拼接键值对第二大表扩容以得到扩容大表;将第一大表与扩容大表关联。本发明专利技术经数据倾斜处理,使键值数据分布更加均匀,进而解决大表和大表关联时的数据倾斜问题,节省计算资源,加快计算速度,节省运行时间。

【技术实现步骤摘要】
数据倾斜的处理方法、系统、电子设备和介质
本专利技术属于大数据计算优化
,尤其涉及一种数据倾斜的处理方法、系统、电子设备和介质。
技术介绍
基于HDFS(分布式文件系统)的离线计算的大表和大表关联时,数据时常发生倾斜问题。现有技术中,往往对数据倾斜的键值不作处理,直接计算。另外,基础数据按照键值形成分区和任务(Task),当基础数据的键值数量分布不均匀,那么各个任务处理的时长、占用的内存、CPU(中央处理器)会非常不平衡,总的处理时长将会取决于最晚的一个任务的处理时长,最终导致计算资源的浪费,计算时间长。
技术实现思路
本专利技术要解决的技术问题是为了克服现有技术中键值数量分布不均匀导致处理时间长的缺陷,提供一种数据倾斜的处理方法、系统、电子设备和介质。本专利技术是通过下述技术方案来解决上述技术问题:本专利技术提供一种数据倾斜的处理方法,包括以下步骤:获取倾斜的键值;将倾斜的键值与一随机数拼接以得到拼接键值;根据拼接键值对第二大表扩容以得到扩容大表;将第一大表与扩容大表关联。较佳地,获取倾斜的键值的步骤包括:如果ID的统计量大于预设阈值,则设置ID为倾斜的键值,统计量为ID在第二大表中的统计量。较佳地,将倾斜的键值与一随机数拼接以得到拼接键值的步骤包括:根据预设随机数生成函数得到随机数,将倾斜的键值与随机数以预设拼接符号连接以得到拼接键值;其中,预设随机数生成函数表征为:Ran=random((v1+t)%1000000000)*v2,其中,Ran表征随机数,v1为第一参数,t为时间戳,v2为第二参数,random()表征随机运算,%为求余运算符,Ran、v1、v2均为正整数。较佳地,根据拼接键值对第二大表扩容以得到扩容大表的步骤包括:将拼接键值作为新增ID添加至第二大表以得到扩容大表。本专利技术还提供一种数据倾斜的处理系统,包括键值获取单元、拼接单元、扩容单元、关联单元;键值获取单元用于获取倾斜的键值;拼接单元用于将倾斜的键值与一随机数拼接以得到拼接键值;扩容单元用于根据拼接键值对第二大表扩容以得到扩容大表;关联单元用于将第一大表与扩容大表关联。较佳地,如果ID的统计量大于预设阈值,则键值获取单元设置ID为倾斜的键值,统计量为ID在第二大表中的统计量。较佳地,拼接单元根据随机数生成函数得到随机数,并将倾斜的键值与随机数以预设拼接符号连接以得到拼接键值;其中,预设随机数生成函数表征为:Ran=random((v1+t)%1000000000)*v2,其中,Ran表征随机数,v1为第一参数,t为时间戳,v2为第二参数,random()表征随机运算,%为求余运算符,Ran、v1、v2均为正整数。较佳地,拼接单元将拼接键值作为新增ID添加至第二大表以得到扩容大表。本专利技术还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现本专利技术的数据倾斜的处理方法。本专利技术还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本专利技术的数据倾斜的处理方法。本专利技术的积极进步效果在于:本专利技术经数据倾斜处理,使键值数据分布更加均匀,进而解决大表和大表关联时的数据倾斜问题,节省计算资源,加快计算速度,节省运行时间。附图说明图1为本专利技术的实施例1的数据倾斜的处理方法的流程图。图2为本专利技术的实施例2的数据倾斜的处理系统的结构示意图。图3为本专利技术的实施例3的电子设备的结构示意图。具体实施方式下面通过实施例的方式进一步说明本专利技术,但并不因此将本专利技术限制在所述的实施例范围之中。实施例1本实施例提供一种数据倾斜的处理方法。参照图1,该数据倾斜的处理方法包括以下步骤:步骤S1、获取倾斜的键值。步骤S2、将倾斜的键值与一随机数拼接以得到拼接键值。步骤S3、根据拼接键值对第二大表扩容以得到扩容大表。步骤S4、将第一大表与扩容大表关联。具体实施时,基于HDFS的第一大表(t1)和第二大表(t2)关联时,假设关联字段为ID,则那么(t2)表中按ID统计数据量,数据量较大的ID值即为倾斜的键值。也即,在步骤S1中,如果ID的统计量大于预设阈值,则设置ID为倾斜的键值,统计量为ID在第二大表中的统计量。步骤S2中,根据预设随机数生成函数得到随机数,将倾斜的键值与随机数以预设拼接符号连接以得到拼接键值。作为一种可选的实施方式,预设随机数生成函数表征为:Ran=random((v1+t)%1000000000)*v2,其中,Ran表征随机数,v1为第一参数,t为时间戳,v2为第二参数,random()表征随机运算,%为求余运算符,Ran、v1、v2均为正整数。其中,random()运算调用nextDouble方法。在另一种可选的实施方式中,预设随机数生成函数包括一个参数,随机类Random对象直接调用nextDouble方法,并乘以输入参数,即为返回的整数。在步骤S3中,将拼接键值作为新增ID添加至第二大表以得到扩容大表。即,在t2表基础上加上以ID拼接步骤S2生成的随机数所有范围的整数作为ID,其余字段与原ID内容都一样的数据。在步骤S4中,将第一大表与扩容大表关联。经前述处理的t1和扩容的t2关联,倾斜的ID关联t2扩容的数据的信息,得到希望得到的信息。在一种可选的实施方式中,以酒店财务预付收入计算Job为例,预付订单需要关联第一大表和第二大表取出供应商名称、结算方式、酒店集团等供应商维度的信息。表的存储方式为HDFS,作业编码为HiveSQL,调度系统为Zeus系统,执行引擎为Spark。在步骤S1中,取出数据倾斜的供应商ID,标准是上一日分区供应商ID对应数据量大于100万的供应商ID,并写入一个表。在步骤S2中,预付订单主表关联步骤S1的倾斜供应商ID列表,匹配的则进行随机数拼接处理,拼接符号为“@”,整数范围为100,种子计算参数使用订单号。在步骤S3中,设计供应商扩容预处理表,计算所有倾斜供应商ID拼接“@”再拼接所有0-100整数,作为扩容部分的供应商ID,同时该表保留原供应商ID。供应商表用左关联扩容预处理表(用原供应商ID关联),匹配的取新的供应商ID,其余维度信息保持不变,如此形成扩容的供应商表。在步骤S4中,经倾斜供应商ID处理的预付订单主表关联扩容的供应商表,去除供应商表需要的供应商名称、结算方式、酒店集团等供应商维度的信息。本实施例的数据倾斜的处理方法经数据倾斜处理,使键值数据分布更加均匀,进而解决大表和大表关联时的数据倾斜问题,节省计算资源,加快计算速度,节省运行时间。实施例2本实施例提供一种数据倾斜的处理系统。参照图2,该数据倾本文档来自技高网...

【技术保护点】
1.一种数据倾斜的处理方法,其特征在于,包括以下步骤:/n获取倾斜的键值;/n将所述倾斜的键值与一随机数拼接以得到拼接键值;/n根据所述拼接键值对第二大表扩容以得到扩容大表;/n将第一大表与所述扩容大表关联。/n

【技术特征摘要】
1.一种数据倾斜的处理方法,其特征在于,包括以下步骤:
获取倾斜的键值;
将所述倾斜的键值与一随机数拼接以得到拼接键值;
根据所述拼接键值对第二大表扩容以得到扩容大表;
将第一大表与所述扩容大表关联。


2.如权利要求1所述的数据倾斜的处理方法,其特征在于,获取倾斜的键值的步骤包括:
如果ID的统计量大于预设阈值,则设置所述ID为所述倾斜的键值,所述统计量为所述ID在所述第二大表中的统计量。


3.如权利要求1所述的数据倾斜的处理方法,其特征在于,将所述倾斜的键值与一随机数拼接以得到拼接键值的步骤包括:
根据预设随机数生成函数得到所述随机数,将所述倾斜的键值与所述随机数以预设拼接符号连接以得到所述拼接键值;
其中,所述预设随机数生成函数表征为:
Ran=random((v1+t)%1000000000)*v2,其中,Ran表征所述随机数,v1为第一参数,t为时间戳,v2为第二参数,random()表征随机运算,%为求余运算符,Ran、v1、v2均为正整数。


4.如权利要求1所述的数据倾斜的处理方法,其特征在于,根据所述拼接键值对第二大表扩容以得到扩容大表的步骤包括:
将所述拼接键值作为新增ID添加至所述第二大表以得到所述扩容大表。


5.一种数据倾斜的处理系统,其特征在于,包括键值获取单元、拼接单元、扩容单元、关联单元;
所述键值获取单元用于获取倾斜的键值;
所述拼接单元用于将所...

【专利技术属性】
技术研发人员:沈佳佳于美丽张帆
申请(专利权)人:携程计算机技术上海有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1