CN111339064A - 数据倾斜矫正方法、装置及计算机可读存储介质 - Google Patents
数据倾斜矫正方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111339064A CN111339064A CN202010141251.7A CN202010141251A CN111339064A CN 111339064 A CN111339064 A CN 111339064A CN 202010141251 A CN202010141251 A CN 202010141251A CN 111339064 A CN111339064 A CN 111339064A
- Authority
- CN
- China
- Prior art keywords
- data
- tuple
- partition
- data set
- partitioned
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2219—Large Object storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及人工智能技术,揭露了一种数据倾斜矫正方法,包括:接收用户输入的数据倾斜矫正指令,根据所述数据倾斜矫正指令从多台服务器中提取原始数据集,将所述原始数据集进行数据放大处理及增加随机数处理,得到待分区数据集,将所述待分区数据集进行分区操作,得到分区数据集,基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集,利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,完成数据倾斜矫正。本发明还提出一种数据倾斜矫正装置以及一种计算机可读存储介质。本发明可以实现精准高效的数据倾斜矫正功能。
Description
技术领域
本发明涉及人工智能技术领域,尤其涉及一种数据倾斜矫正的方法、装置及计算机可读存储介质。
背景技术
对于集群系统,一般缓存是分布式的,即不同服务器节点负责一定范围的缓存数据。我们把缓存数据分散度不够,导致大量的缓存数据集中到了一台或者几台服务器节点上,称为数据倾斜。当前矫正数据倾斜的方法有增加jvm内存、增加数据倾斜处的个数、自定义分区、重新设计键以及使用combinner合并等方法,虽然这些方法对数据倾斜的矫正有一定作用,但由于这些方法事先没有对数据进行预处理,且由于表与表之间数据差距较大,处理过程较为复杂,以及没有进行算法优化,在系统内存不足的情况下,较大的影响数据倾斜矫正的效率。
发明内容
本发明提供一种数据倾斜矫正方法、装置及计算机可读存储介质,其主要目的在于根据分区矫正算法进行数据倾斜矫正,减轻系统计算压力,减小系统内存占用率。
为实现上述目的,本发明提供的一种数据倾斜矫正方法,包括:
接收用户输入的数据倾斜矫正指令,根据所述数据倾斜矫正指令从多台服务器中提取原始数据集,将所述原始数据集进行数据放大处理及增加随机数处理,得到待分区数据集;
将所述待分区数据集进行分区操作,得到分区数据集;
基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集;
利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,完成数据倾斜矫正。
可选地,所述将所述待分区数据集进行分区操作,得到分区数据集,包括:
选择所述待分区数据集的分区策略;
根据所述分区策略求解所述分区操作的约束条件;
根据所述分区策略及所述约束条件,求解分区的数据数量,并基于所述数据数量对所述待分区数据集进行分区得到分区数据集。
可选地,所述基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集,包括:
创建与所述分区数据集对应的元组向量集;
累加所述元组向量集得到全局元组向量集;
预构建元组分配向量,基于所述元组分配向量统计所述全局元组向量集得到所述元组分区数据集。
可选地,利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,包括:
根据存储空间贪心策略,对所述多台服务器内已有数据集重新进行存储空间分配,得到存储空间均衡的多台服务器;
将所述元组分区数据集内的元组分区数据存储至存储空间均衡的其中一台服务器,并将已存储元组分区数据的服务器从所述存储空间均衡的多台服务器内剔除,直至所述存储空间均衡的多台服务器内都存储元组分区数据得到多个元组分区数据存储服务器;
判断所述元组分区数据集内是否还有元组分区数据,若所述元组分区数据集内还有元组分区数据,将元组分区数据存储至所述多个元组分区数据存储服务器内的其中一个,若所述元组分区数据集内没有元组分区数据,完成数据倾斜。
可选地,所述预构建元组分配向量为:
AB=(R1,R2,R3,Rb…,Rr)
其中,AB为所述预构建元组分配向量,r是数据倾斜的预定任务数,R是目前已分配的元组数量;
Rb=(f1,f2,f3,fi…,fn)(b∈[1,r])
Rb向量是所述数据倾斜所分配的元组分配向量数量,其中,fi表示已分配的元组分配向量数量,所述fi的计算方法为:
其中,σ为所述高斯核函数的核数,e为无限不循环小数,αk为所述元组向量集,k为所述所述元组向量集的向量编号。
此外,为实现上述目的,本发明还提供一种数据倾斜矫正装置,该装置包括存储器和处理器,所述存储器中存储有可在所述处理器上运行的数据倾斜矫正程序,所述数据倾斜矫正程序被所述处理器执行时实现如下步骤:
接收用户输入的数据倾斜矫正指令,从多台服务器中提取原始数据集,将所述原始数据集进行数据放大处理及增加随机数处理,得到待分区数据集;
将所述待分区数据集进行分区操作,得到分区数据集;
基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集;
利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,完成数据倾斜矫正。
可选地,所述将所述待分区数据集进行分区操作,得到分区数据集,包括:
选择所述待分区数据集的分区策略;
根据所述分区策略求解所述分区操作的约束条件;
根据所述分区策略及所述约束条件,求解分区的数据数量,并基于所述数据数量对所述待分区数据集进行分区得到分区数据集。
可选地,所述基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集,包括:
创建与所述分区数据集对应的元组向量集;
累加所述元组向量集得到全局元组向量集;
预构建元组分配向量,基于所述元组分配向量统计所述全局元组向量集得到所述元组分区数据集。
可选地,利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,包括:
根据存储空间贪心策略,对所述多台服务器内已有数据集重新进行存储空间分配,得到存储空间均衡的多台服务器;
将所述元组分区数据集内的元组分区数据存储至存储空间均衡的其中一台服务器,并将已存储元组分区数据的服务器从所述存储空间均衡的多台服务器内剔除,直至所述存储空间均衡的多台服务器内都存储元组分区数据得到多个元组分区数据存储服务器;
判断所述元组分区数据集内是否还有元组分区数据,若所述元组分区数据集内还有元组分区数据,将元组分区数据存储至所述多个元组分区数据存储服务器内的其中一个,若所述元组分区数据集内没有元组分区数据,完成数据倾斜。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据倾斜矫正程序,所述数据倾斜矫正程序可被一个或者多个处理器执行,以实现如上所述的数据倾斜矫正方法的步骤。
本发明通过对数据进行放大处理及增加随机数处理,并构建了分区操作,使得表格之间数据差距较小,使得后续处理过程较为简单,减轻系统计算压力,同时根据预先构建的元组评估模型对数据集进行统计,减小系统内存占用率,降低了内存不足情况下对数据倾斜矫正的效率的影响,且分区矫正算法计算量不大的情况下,分区矫正效率也得到提高。因此本发明提出的数据倾斜矫正方法、装置及计算机可读存储介质,可以实现高效的数据倾斜矫正功能。
附图说明
图1为本发明一实施例提供的数据倾斜矫正方法的流程示意图;
图2为本发明一实施例提供的数据倾斜矫正装置的内部结构示意图;
图3为本发明一实施例提供的数据倾斜矫正装置中数据倾斜矫正程序的模块示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种数据倾斜矫正方法。参照图1所示,为本发明一实施例提供的数据倾斜矫正方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,数据倾斜矫正方法包括:
S1、接收用户输入的数据倾斜矫正指令,根据所述数据倾斜矫正指令从多台服务器中提取原始数据集,将所述原始数据集进行数据放大处理及增加随机数处理,得到待分区数据集。
优选地,所述原始数据集可包括普通小样本数据集,如表格集,也可包括基于大数据平台的大样本数据集,如在保险行业中,Model Point是重要的数据分析模块,由于所述Model Point分析模块需要处理的表格集的数据量非常大,因此可放在大数据平台上实现提高效率,但在运行过程中发现,当某大表与某小表进行关联操作时,由于所述某大表与所述某小表之间的数据不均匀,造成数据都会倾斜到某台服务器上,即为所述数据倾斜,从而影响到运行效率,甚至程序报错无法运行。
在本发明其中一个实施例中,所述原始数据集包括A、B两张表,其中A表为大表,B为小表,则所述数据放大处理是指对B表(小表)的数据放大100倍,增加倍数字段(从1到100);所述增加随机数处理是对A表增加随机数字段,该字段数值为1到100的随机数,这样所述A表(大表)数据并没有增加,不会影响总体数据量。
经过所述数据放大处理及增加随机数处理后,得到待分区数据集。
S2、将所述待分区数据集进行分区操作,得到分区数据集。
较佳地,将所述待分区数据集进行分区操作,包括:选择所述待分区数据集的分区策略,根据所述分区策略求解所述分区操作的约束条件,根据所述分区策略及所述约束条件,求解分区的数据数量,并基于所述数据数量对所述待分区数据集进行分区得到分区数据集。
所述分区策略有多种,可根据所述待分区数据集的数据种类的不同进行选择。如表格集类的待分区数据集可采用迭代式数据分区策略,所述迭代式数据分区策略可基于Mapper表格架构。所述分区策略包括首先对所述待分区数据集进行表格拆分得到的多个细粒度数据块(简称FGB),基于所述细粒度数据块创建索引,将所述多个细粒度数据块合并表格相同的元组得到待分区细粒度集,并将所述待分区细粒度集分配到一个或多个所述Mapper表格架构的节点上得到所述分区数据集。其中,每组分区数据集都对应自身的索引值。所述元组是指在表中的每行(即数据库中的每条记录),其中表的每列代表一个属性。
约束条件有多种类型,如不重复的约束原则,所述不重复的约束原则即所述分区的约束条件为当前所述Mapper表格架构节点上若已存在所述待分区细粒度集,则不再分配新的待分区细粒度集。
所述确定每次分区的数据数量中,所述数量是指每次拆分所述待分区数据集时的数量。
S3、基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集。
较佳地,所述元组评估模型包括元组向量生成模块,全局元组向量生成模块及统计模块。
详细地,所述S3包括:创建与所述分区数据集对应的元组向量集,累加所述元组向量集得到全局元组向量集,预构建元组分配向量,基于所述元组分配向量统计所述全局元组向量集得到所述元组分区数据集。
所述元组向量集为:
α=(t1,t2,t3,ti,…,tn)
其中ti=(index,factor,seg_no,slot_no)(i∈[1,n]),index为所述分区数据集索引,factor为所述分区数据集的索引因子,seg_no为所述分区数据集的数据编号,slot_no为所述分区数据集的slot槽号,如果slot_no为-1,则表示所述分区数据集的元组尚未统计。
在执行所述累加所述元组向量集时,当有m个Mapper表格架构同时运行,则将每个Mapper表格架构上的元组向量集αk进行累加,得到全局元组向量集AM:
AM=∑αk(k∈[1,m])
所述Mapper表格架构每次分区结束时,将所述元组向量集αk发送给分区内预先构建的一个向量存储单元,当所述待分区数据集分区完成后,所述分区向量存储单元将所有的元组向量集αk累加到二维全局元组向量集AM中,即可得到截至当前分区结束后的所述全局元组向量集。
由于容易造成数据倾斜的数据与元组是一对一的对应关系,因此本发明可以通过统计已分区的元组数量计算得到数据倾斜量,即统计所述全局元组向量集可实现数据倾斜的矫正。较佳地,本发明先定义一个元组分配向量AB:
AB=(R1,R2,R3,…,Rr)
其中r是所述数据倾斜的预定任务数,R是目前已分配的元组数量。
Rb=(f1,f2,f3,…,fn)(b∈[1,r])
Rb向量是用于记录所述数据倾斜分配的元组分配向量数量。其中,fi表示一个所述数据倾斜处已分配的元组数量。通过上述方法即可将接收的所述分区数据集进行统计,得到所述元组分区数据集。
进一步地,所述fn的计算方法可基于高斯核函数为:
其中,σ为所述高斯核函数的核数(也称为调节因子),e为无限不循环小数,αk为所述元组向量集,k为所述所述元组向量集的向量编号。
S4、利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,完成数据倾斜矫正。
详细地,利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,包括:
根据存储空间贪心策略,对所述多台服务器内已有数据集重新进行存储空间分配,得到存储空间均衡的多台服务器;
将所述元组分区数据集内的元组分区数据存储至存储空间均衡的其中一台服务器,并将已存储元组分区数据的服务器从所述存储空间均衡的多台服务器内剔除,直至所述存储空间均衡的多台服务器内都存储元组分区数据得到多个元组分区数据存储服务器;
判断所述元组分区数据集内是否还有元组分区数据,若所述元组分区数据集内还有元组分区数据,将元组分区数据存储至所述多个元组分区数据存储服务器内的其中一个,若所述元组分区数据集内没有元组分区数据,完成数据倾斜。
在未采用分区矫正算法时,在保险行业中存在如下A,B两个表,其中A为几十亿的大表,B表为几千记录的小表,原始表结构的一个示例如下所示:
A表
B表
险种 | 变量1 | 变量2 |
123 | 1 | 1 |
125 | 1 | 2 |
… |
其中A表和B表通过险种关联后,发现123的险种会有非常多(示例只列出3条,但实际情况可能会更多),这样就会造成基于表格运算123险种时,会倾斜到某台服务器上,造成所述数据倾斜问题。
本发明较佳实施例利用所述分区矫正算法首先通过X.add(i)方法剔除当前已分配了元组分区数据集的服务器,并从剔除的服务器中选择本轮需分配元组分区数据集的服务器,计算所述本轮服务器内的存储空间及所述元组分区数据集的数据量,根据所述存储空间和所述数据量进行智能分配后,重新更新服务器的存储量,直到所述元组分区数据集分配完成。
如经过上述的数据倾斜矫正,当A表与B关联时,数据非常均匀的分布在100个节点上,使用每个节点的数据都一样,如下所示:
B表
这样就能解决数据倾斜的问题,提高了运行效率,进一步地,所述100个节点可分别在不同的服务器中,如100个节点在7个服务器中,因此7个服务器内的数据完成了数据倾斜矫正。
本发明还提供一种数据倾斜矫正装置。参照图2所示,为本发明一实施例提供的数据倾斜矫正装置的内部结构示意图。
在本实施例中,所述数据倾斜矫正装置1可以是PC(Personal Computer,个人电脑),或者是智能手机、平板电脑、便携计算机等终端设备,也可以是一种服务器等。该数据倾斜矫正装置1至少包括存储器11、处理器12,通信总线13,以及网络接口14。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是数据倾斜矫正装置1的内部存储单元,例如该数据倾斜矫正装置1的硬盘。存储器11在另一些实施例中也可以是数据倾斜矫正装置1的外部存储设备,例如数据倾斜矫正装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括数据倾斜矫正装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于数据倾斜矫正装置1的应用软件及各类数据,例如数据倾斜矫正程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行数据倾斜矫正程序01等。
通信总线13用于实现这些组件之间的连接通信。
网络接口14可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该装置1与其他电子设备之间建立通信连接。
可选地,该装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在数据倾斜矫正装置1中处理的信息以及用于显示可视化的用户界面。
图2仅示出了具有组件11-14以及数据倾斜矫正程序01的数据倾斜矫正装置1,本领域技术人员可以理解的是,图1示出的结构并不构成对数据倾斜矫正装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在图2所示的装置1实施例中,存储器11中存储有数据倾斜矫正程序01;处理器12执行存储器11中存储的数据倾斜矫正程序01时实现如下步骤:
步骤一、接收用户输入的数据倾斜矫正指令,根据所述数据倾斜矫正指令从多台服务器中提取原始数据集,将所述原始数据集进行数据放大处理及增加随机数处理,得到待分区数据集。
优选地,所述原始数据集可包括普通小样本数据集,如表格集,也可包括基于大数据平台的大样本数据集,如在保险行业中,Model Point是重要的数据分析模块,由于所述Model Point分析模块需要处理的表格集的数据量非常大,因此可放在大数据平台上实现提高效率,但在运行过程中发现,当某大表与某小表进行关联操作时,由于所述某大表与所述某小表之间的数据不均匀,造成数据都会倾斜到某台服务器上,即为所述数据倾斜,从而影响到运行效率,甚至程序报错无法运行。
在本发明其中一个实施例中,所述原始数据集包括A、B两张表,其中A表为大表,B为小表,则所述数据放大处理是指对B表(小表)的数据放大100倍,增加倍数字段(从1到100);所述增加随机数处理是对A表增加随机数字段,该字段数值为1到100的随机数,这样所述A表(大表)数据并没有增加,不会影响总体数据量。
经过所述数据放大处理及增加随机数处理后,得到待分区数据集。
步骤二、将所述待分区数据集进行分区操作,得到分区数据集。
较佳地,将所述待分区数据集进行分区操作,包括:选择所述待分区数据集的分区策略,根据所述分区策略求解所述分区操作的约束条件,根据所述分区策略及所述约束条件,求解分区的数据数量,并基于所述数据数量对所述待分区数据集进行分区得到分区数据集。
所述分区策略有多种,可根据所述待分区数据集的数据种类的不同进行选择。如表格集类的待分区数据集可采用迭代式数据分区策略,所述迭代式数据分区策略可基于Mapper表格架构。所述分区策略包括首先对所述待分区数据集进行表格拆分得到的多个细粒度数据块(简称FGB),基于所述细粒度数据块创建索引,将所述多个细粒度数据块合并表格相同的元组得到待分区细粒度集,并将所述待分区细粒度集分配到一个或多个所述Mapper表格架构的节点上得到所述分区数据集。其中,每组分区数据集都对应自身的索引值。所述元组是指在表中的每行(即数据库中的每条记录),其中表的每列代表一个属性。
约束条件有多种类型,如不重复的约束原则,所述不重复的约束原则即所述分区的约束条件为当前所述Mapper表格架构节点上若已存在所述待分区细粒度集,则不再分配新的待分区细粒度集。
所述确定每次分区的数据数量中,所述数量是指每次拆分所述待分区数据集时的数量。
步骤三、基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集。
较佳地,所述元组评估模型包括元组向量生成模块,全局元组向量生成模块及统计模块。
详细地,所述S3包括:创建与所述分区数据集对应的元组向量集,累加所述元组向量集得到全局元组向量集,预构建元组分配向量,基于所述元组分配向量统计所述全局元组向量集得到所述元组分区数据集。
所述元组向量集为:
α=(t1,t2,t3,ti,…,tn)
其中ti=(index,factor,seg_no,slot_no)(i∈[1,n]),index为所述分区数据集索引,factor为所述分区数据集的索引因子,seg_no为所述分区数据集的数据编号,slot_no为所述分区数据集的slot槽号,如果slot_no为-1,则表示所述分区数据集的元组尚未统计。
在执行所述累加所述元组向量集时,当有m个Mapper表格架构同时运行,则将每个Mapper表格架构上的元组向量集αk进行累加,得到全局元组向量集AM:
AM=∑αk(k∈[1,m])
所述Mapper表格架构每次分区结束时,将所述元组向量集αk发送给分区内预先构建的一个向量存储单元,当所述待分区数据集分区完成后,所述分区向量存储单元将所有的元组向量集αk累加到二维全局元组向量集AM中,即可得到截至当前分区结束后的所述全局元组向量集。
由于容易造成数据倾斜的数据与元组是一对一的对应关系,因此本发明可以通过统计已分区的元组数量计算得到数据倾斜量,即统计所述全局元组向量集可实现数据倾斜的矫正。较佳地,本发明先定义一个元组分配向量AB:
AB=(R1,R2,R3,…,Rr)
其中r是所述数据倾斜的预定任务数,R是目前已分配的元组数量。
Rb=(f1,f2,f3,…,fn)(b∈[1,r])
Rb向量是用于记录所述数据倾斜分配的元组分配向量数量。其中,fi表示一个所述数据倾斜处已分配的元组数量。通过上述方法即可将接收的所述分区数据集进行统计,得到所述元组分区数据集。
进一步地,所述fn的计算方法可基于高斯核函数为:
其中,σ为所述高斯核函数的核数(也称为调节因子),e为无限不循环小数,αk为所述元组向量集,k为所述所述元组向量集的向量编号。
步骤四、利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,完成数据倾斜矫正。
详细地,利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,包括:
根据存储空间贪心策略,对所述多台服务器内已有数据集重新进行存储空间分配,得到存储空间均衡的多台服务器;
将所述元组分区数据集内的元组分区数据存储至存储空间均衡的其中一台服务器,并将已存储元组分区数据的服务器从所述存储空间均衡的多台服务器内剔除,直至所述存储空间均衡的多台服务器内都存储元组分区数据得到多个元组分区数据存储服务器;
判断所述元组分区数据集内是否还有元组分区数据,若所述元组分区数据集内还有元组分区数据,将元组分区数据存储至所述多个元组分区数据存储服务器内的其中一个,若所述元组分区数据集内没有元组分区数据,完成数据倾斜。
在未采用分区矫正算法时,在保险行业中存在如下A,B两个表,其中A为几十亿的大表,B表为几千记录的小表,原始表结构的一个示例如下所示:
A表
保单 | 主附约号 | 险种 | 变量 |
xxx | 0 | 123 | 1 |
xxx | 1 | 124 | 5 |
yyy | 0 | 123 | 1 |
yyy | 1 | 125 | 2 |
ggg | 2 | 123 | 4 |
… |
B表
险种 | 变量1 | 变量2 |
123 | 1 | 1 |
125 | 1 | 2 |
… |
其中A表和B表通过险种关联后,发现123的险种会有非常多(示例只列出3条,但实际情况可能会更多),这样就会造成基于表格运算123险种时,会倾斜到某台服务器上,造成所述数据倾斜问题。
本发明较佳实施例利用所述分区矫正算法首先通过X.add(i)方法剔除当前已分配了元组分区数据集的服务器,并从剔除的服务器中选择本轮需分配元组分区数据集的服务器,计算所述本轮服务器内的存储空间及所述元组分区数据集的数据量,根据所述存储空间和所述数据量进行智能分配后,重新更新服务器的存储量,直到所述元组分区数据集分配完成。
如经过上述的数据倾斜矫正,当A表与B关联时,数据非常均匀的分布在100个节点上,使用每个节点的数据都一样,如下所示:
B表
险种 | 变量1 | 变量2 | 倍数 |
123 | 1 | 1 | 1 |
125 | 1 | 2 | 1 |
123 | 1 | 1 | 2 |
125 | 1 | 2 | 2 |
123 | 1 | 1 | 3 |
125 | 1 | 2 | 3 |
123 | 1 | 1 | 4 |
125 | 1 | 2 | 4 |
… | … |
这样就能解决数据倾斜的问题,提高了运行效率,进一步地,所述100个节点可分别在不同的服务器中,如100个节点在7个服务器中,因此7个服务器内的数据完成了数据倾斜矫正。
可选地,在其他实施例中,数据倾斜矫正程序还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述数据倾斜矫正程序在数据倾斜矫正装置中的执行过程。
例如,参照图3所示,为本发明数据倾斜矫正装置一实施例中的数据倾斜矫正程序的程序模块示意图,该实施例中,所述数据倾斜矫正程序可以被分割为数据接收及处理模块10、分区操作模块20、统计模块30、分区矫正并输出模块40示例性地:
所述数据接收及处理模块10用于:接收用户输入的数据倾斜矫正指令,从多台服务器中提取原始数据集,将所述原始数据集进行数据放大处理及增加随机数处理,得到待分区数据集。
所述分区操作模块20用于:将所述待分区数据集进行分区操作,得到分区数据集。
所述统计模块30用于:基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集。
所述分区矫正并输出模块40用于:利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,完成数据倾斜矫正。
上述数据接收及处理模块10、分区操作模块20、统计模块30、分区矫正并输出模块40等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据倾斜矫正程序,所述数据倾斜矫正程序可被一个或多个处理器执行,以实现如下操作:
接收用户输入的数据倾斜矫正指令,从多台服务器中提取原始数据集,将所述原始数据集进行数据放大处理及增加随机数处理,得到待分区数据集。
将所述待分区数据集进行分区操作,得到分区数据集。
基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集。
利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,完成数据倾斜矫正。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据倾斜矫正方法,其特征在于,所述方法包括:
接收用户输入的数据倾斜矫正指令,根据所述数据倾斜矫正指令从多台服务器中提取原始数据集,将所述原始数据集进行数据放大处理及增加随机数处理,得到待分区数据集;
将所述待分区数据集进行分区操作,得到分区数据集;
基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集;
利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,完成数据倾斜矫正。
2.如权利要求1所述的数据倾斜矫正方法,其特征在于,所述将所述待分区数据集进行分区操作,得到分区数据集,包括:
选择所述待分区数据集的分区策略;
根据所述分区策略求解所述分区操作的约束条件;
根据所述分区策略及所述约束条件,求解分区的数据数量,并基于所述数据数量对所述待分区数据集进行分区得到分区数据集。
3.如权利要求1或2所述的数据倾斜矫正方法,其特征在于,所述基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集,包括:
创建与所述分区数据集对应的元组向量集;
累加所述元组向量集得到全局元组向量集;
预构建元组分配向量,基于所述元组分配向量统计所述全局元组向量集得到所述元组分区数据集。
4.如权利要求3所述的数据倾斜矫正方法,其特征在于,利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,包括:
根据存储空间贪心策略,对所述多台服务器内已有数据集重新进行存储空间分配,得到存储空间均衡的多台服务器;
将所述元组分区数据集内的元组分区数据存储至存储空间均衡的其中一台服务器,并将已存储元组分区数据的服务器从所述存储空间均衡的多台服务器内剔除,直至所述存储空间均衡的多台服务器内都存储元组分区数据得到多个元组分区数据存储服务器;
判断所述元组分区数据集内是否还有元组分区数据,若所述元组分区数据集内还有元组分区数据,将元组分区数据存储至所述多个元组分区数据存储服务器内的其中一个,若所述元组分区数据集内没有元组分区数据,完成数据倾斜。
6.一种数据倾斜矫正装置,其特征在于,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的数据倾斜矫正程序,所述数据倾斜矫正程序被所述处理器执行时实现如下步骤:
接收用户输入的数据倾斜矫正指令,根据所述数据倾斜矫正指令从多台服务器中提取原始数据集,将所述原始数据集进行数据放大处理及增加随机数处理,得到待分区数据集;
将所述待分区数据集进行分区操作,得到分区数据集;
基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集;
利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,完成数据倾斜矫正。
7.如权利要求6所述的数据倾斜矫正装置,其特征在于,所述将所述待分区数据集进行分区操作,得到分区数据集,包括:
选择所述待分区数据集的分区策略;
根据所述分区策略求解所述分区操作的约束条件;
根据所述分区策略及所述约束条件,求解分区的数据数量,并基于所述数据数量对所述待分区数据集进行分区得到分区数据集。
8.如权利要求6或7所述的数据倾斜矫正装置,其特征在于,所述基于预先构建的元组评估模型对所述分区数据集进行统计,得到元组分区数据集,包括:
创建与所述分区数据集对应的元组向量集;
累加所述元组向量集得到全局元组向量集;
预构建元组分配向量,基于所述元组分配向量统计所述全局元组向量集得到所述元组分区数据集。
9.如权利要求8中所述的数据倾斜矫正装置,其特征在于,利用分区矫正算法对所述元组分区数据集进行数据倾斜矫正并重新分配给所述多台服务器,包括:
根据存储空间贪心策略,对所述多台服务器内已有数据集重新进行存储空间分配,得到存储空间均衡的多台服务器;
将所述元组分区数据集内的元组分区数据存储至存储空间均衡的其中一台服务器,并将已存储元组分区数据的服务器从所述存储空间均衡的多台服务器内剔除,直至所述存储空间均衡的多台服务器内都存储元组分区数据得到多个元组分区数据存储服务器;
判断所述元组分区数据集内是否还有元组分区数据,若所述元组分区数据集内还有元组分区数据,将元组分区数据存储至所述多个元组分区数据存储服务器内的其中一个,若所述元组分区数据集内没有元组分区数据,完成数据倾斜。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据倾斜矫正程序,所述数据倾斜矫正程序可被一个或者多个处理器执行,以实现如权利要求1至5中任一项所述的数据倾斜矫正方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010141251.7A CN111339064A (zh) | 2020-03-03 | 2020-03-03 | 数据倾斜矫正方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010141251.7A CN111339064A (zh) | 2020-03-03 | 2020-03-03 | 数据倾斜矫正方法、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111339064A true CN111339064A (zh) | 2020-06-26 |
Family
ID=71183930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010141251.7A Pending CN111339064A (zh) | 2020-03-03 | 2020-03-03 | 数据倾斜矫正方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111339064A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905596A (zh) * | 2021-03-05 | 2021-06-04 | 北京中经惠众科技有限公司 | 数据处理的方法、装置、计算机设备以及存储介质 |
CN113742314A (zh) * | 2021-08-06 | 2021-12-03 | 紫金诚征信有限公司 | 数据倾斜矫正方法、装置、计算机设备和存储介质 |
-
2020
- 2020-03-03 CN CN202010141251.7A patent/CN111339064A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905596A (zh) * | 2021-03-05 | 2021-06-04 | 北京中经惠众科技有限公司 | 数据处理的方法、装置、计算机设备以及存储介质 |
CN112905596B (zh) * | 2021-03-05 | 2024-02-02 | 北京中经惠众科技有限公司 | 数据处理的方法、装置、计算机设备以及存储介质 |
CN113742314A (zh) * | 2021-08-06 | 2021-12-03 | 紫金诚征信有限公司 | 数据倾斜矫正方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200257689A1 (en) | Structured cluster execution for data streams | |
US9268796B2 (en) | Systems and methods for quantile estimation in a distributed data system | |
US10769146B1 (en) | Data locality based query optimization for scan operators | |
US8417991B2 (en) | Mitigating reduction in availability level during maintenance of nodes in a cluster | |
US8868484B2 (en) | Efficiently updating rows in a data warehouse | |
US20200159708A1 (en) | Data Storage Method and Apparatus, and Storage Medium | |
CN107786943B (zh) | 一种用户分群方法及计算设备 | |
US20160328445A1 (en) | Data Query Method and Apparatus | |
US20180314566A1 (en) | Systems for parallel processing of datasets with dynamic skew compensation | |
CN110363303B (zh) | 智能分配模型训练内存方法、装置及计算机可读存储介质 | |
CN111339064A (zh) | 数据倾斜矫正方法、装置及计算机可读存储介质 | |
CN105550270A (zh) | 数据库查询方法和装置 | |
CN106557307B (zh) | 业务数据的处理方法及处理系统 | |
CN111695840A (zh) | 一种实现流程控制的方法和装置 | |
CN103116641B (zh) | 获取排序的统计数据的方法及排序装置 | |
US20190050672A1 (en) | INCREMENTAL AUTOMATIC UPDATE OF RANKED NEIGHBOR LISTS BASED ON k-th NEAREST NEIGHBORS | |
CN110309496B (zh) | 数据汇总方法、电子装置及计算机可读存储介质 | |
CN111813517A (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
CN111259318A (zh) | 智能化的数据优化方法、装置及计算机可读存储介质 | |
WO2021139276A1 (zh) | 平台数据库自动化运维方法、装置及计算机可读存储介质 | |
US8856126B2 (en) | Simplifying grouping of data items stored in a database | |
CN113051293A (zh) | 基于树形结构的资源查询方法、装置和电子设备 | |
CN111221917A (zh) | 智能分区存储方法、装置及计算机可读存储介质 | |
CN104778253A (zh) | 一种提供数据的方法和装置 | |
US8374995B2 (en) | Efficient data backflow processing for data warehouse |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |