处理数据倾斜的方法、装置、设备及存储介质制造方法及图纸

技术编号:23890555 阅读:22 留言:0更新日期:2020-04-22 06:17
本申请涉及大数据领域,提供一种处理数据倾斜的方法、装置、设备及存储介质,方法包括:预先设置待存储空间的容量大小,设置待存储空间中的数据类型和目标数量;基于容量大小和数据类型根据预设规则对待存储空间进行分区得到每种数据类型对应的子存储空间的大小和数量;根据各子存储空间的大小以及数据类型对应的目标数量通过分区规则确定各分区内目标存储空间的大小和数量;根据各分区内目标存储空间的数量设置各分区的随机数;将随机数和预设判断条件标记在待存储空间中的各数据上;通过随机分组函数分析待存储空间中的各数据上标记的内容,以将各数据类型对应的数据存储到目标待存储空间中。采用本方案,能够有效地解决数据倾斜处理问题。

Methods, devices, equipment and storage media for data skew

【技术实现步骤摘要】
处理数据倾斜的方法、装置、设备及存储介质
本申请涉及数据处理领域,尤其涉及处理数据倾斜的方法、装置、设备及存储介质。
技术介绍
随着物联网、云计算和网络带宽等技术的高速发展,大数据计算被广泛运用。大数据计算中,海量的数据信息的传输或存储或处理常会导致数据倾斜。在现有的数据仓库工具Hive中,没有可调整的参数或者可调用的函数,来直接性地解决数据读取时所发生的数据倾斜问题,以至于Hive以及其他的大数据计算引擎在读取Hive表数据发生数据倾斜时,得不到及时和有效的处理,从而导致整个任务无法按规定时效完成,进而无法达到业务需求。目前的数据倾斜处理,通过检测输入文件的大小,若所述输入文件的大小小于第一预设阈值,则检测大小小于第一预设阈值的输入文件的数量,当所述数量大于第二预设阈值时,将文件合并,若文件的大小在预设范围内,则增加Map的数量。由于在获取单个原输入文件时需要将合并文件拆分,导致数据处理资源的增加,影响运行时间,且Map数据的增加导致数据处理时间的增长,以影响运行效率,因而,导致无法有效地解决数据倾斜处理问题。
技术实现思路
本申请提供了一种处理数据倾斜的方法、装置、设备及存储介质,能够有效地解决数据倾斜处理问题。第一方面,本申请提供一种处理数据倾斜的方法,所述方法包括:预先设置待存储空间的容量大小,设置所述待存储空间中的数据类型和各所述数据类型对应的数据的目标数量;基于所述容量大小和所述数据类型根据预设规则对所述待存储空间进行分区得到每种数据类型对应的子存储空间的大小和数量所述待存储空间的数量包括多个子存储空间;根据各所述子存储空间的大小以及所述数据类型对应的目标数量通过分区规则确定各分区内目标存储空间的大小和数量,所述子存储空间包括多个所述目标存储空间;根据各分区内所述目标存储空间的数量设置各分区的随机数,所述随机数包括各分区对应的分区号;将预设判断条件和所述随机数标记在所述待存储空间中的各数据上,所述预设判断条件用于判断存储到目标待存储空间中的数据;通过随机分组函数分析所述待存储空间中的各数据上标记的内容,以将所述各数据类型对应的数据存储到目标待存储空间中。一种可能的设计中,所述根据各所述子存储空间的大小以及所述数据类型对应的目标数量通过分区规则确定各分区内目标存储空间的大小和数量,包括:通过分区规则分析所述数据类型对应的目标数量,确定所述子存储空间的划分区域和划分数量,所述划分数量指示各所述划分区域内存储的数据的数量;根据所述子存储空间的大小计算各所述划分区域的大小,得到各区域大小;根据所述划分数量对各所述划分区域进行平均划分,得到各所述划分区域中多个目标存储空间,所述各所述划分区域对应的目标存储空间的数量和为各分区内目标存储空间的数量;根据所述各区域大小计算各所述划分区域对应的目标存储空间的平均大小,得到各分区内目标存储空间的大小。一种可能的设计中,所述根据各所述子存储空间的大小以及所述数据类型对应的目标数量通过分区规则确定各分区内目标存储空间的大小和数量,包括:获取所述子存储空间中键Key的量级;根据所述Key的量级设置数量阈值,所述数量阈值指示存储于所述子存储空间中的目标存储空间的最大数量;将所述数量阈值、所述子存储空间的大小和所述数据类型对应的目标数量作为判断项,并创建所述数量阈值、所述子存储空间的大小和所述数据类型对应的目标数量的对应关系;根据所述判断项和所述对应关系建立分区规则,并根据所述分区规则和所述对应关系创建划分表;根据所述对应关系遍历所述划分表获得各分区内目标存储空间的大小和数量。一种可能的设计中,所述根据各分区内所述目标存储空间的数量设置各分区的随机数,包括:获取根据所述划分表获取的各分区内所述目标存储空间的数量;将各分区内所述目标待存储空间的数量的值设置为各分区的随机数的最大值;基于所述最大值通过随机函数生成各分区的随机数。一种可能的设计中,所述预设判断条件,包括:当检测到一个或一个以上的回调函数对应的数据的数量大于预设平均值时,获取回调函数对应的数据的数量为最大值对应的目标key;将所述目标key重新组合成弹性分布式数据集,并在经过重新组合成弹性分布式数据集的所述目标key的前缀标记所述随机数;将标记所述随机数为前缀的目标key调到多个任务中进行结合join操作以获取多个操作结果,将多个所述操作结果聚合;当检测到用户表与日志表中的目标数据类型存在差异时,分别将所述用户表与所述日志表中的目标数据类型中的数字类型转换成字符串类型,其中,所述待存储空间包括用户表和日志表,所述目标数据类型指示相同数据字段的数据类型;检测经过数据类型转换的数据是否存在空值,若是,则赋予存在空值的数据新的key值,其中,所述新的key值指示将空值的key转换为一个标记所述随机数的字符串。一种可能的设计中,所述预设判断条件,包括:判断执行时间是否大于预设执行任务时间的三分之二,其中,所述执行时间用于指示所述各数据对应的任务的执行时间,所述预设执行时间指示预设的重新分配的任务执行时间;判断执行时间是否大于预设执行时间的三分之二,其中,所述执行时间指示所述各数据对应的任务的执行时间,所述预设执行时间指示预设的重新分配的任务执行时间;若执行时间大于预设执行时间的三分之二,则标记所述执行时间大于预设执行时间的三分之二的数据为剔除数据,并标记标签信息,所述标签信息存储于标记所述剔除数据的目标存储空间中;判断所述各数据是否带有预置符号;若所述各数据带有预置符号,则标记所述各数据中带有预置符号的数据为剔除数据,并标记标签信息,所述标签信息存储于标记剔除数据的目标存储空间中。一种可能的设计中,所述根据各分区内所述目标存储空间的数量设置各分区的随机数,包括:根据各分区内所述目标存储空间的数量设置各数据的配置权重值;获取所述目标存储空间的各数据的当前有效权重值,并将所述当前有效权重值初始为所述配置权重值,计算所述各数据的配置权重值总和;从一到所述配置权重值总和的值之间随机选择一个目标值,并按照当前有效权重值从大到小的顺序对所述各数据进行排序,以获取排序集合;遍历所述排序集合,计算所述排序集合遍历到的数据的当前有效权重值之和;当检测到所述当前有效权重值之和不小于所述目标值时,停止对所述排序集合的遍历,将停止对所述排序集合的遍历时的数据的当前有效权重值设置为分区的随机数。第二方面,本申请提供一种处理数据倾斜的装置,具有实现对应于上述第一方面提供的处理数据倾斜的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。一种可能的设计中,所述装置包括:收发模块,用于接收预先设置待存储空间的容量大小,设置所述本文档来自技高网...

【技术保护点】
1.一种处理数据倾斜的方法,其特征在于,所述方法包括:/n预先设置待存储空间的容量大小,设置所述待存储空间中的数据类型和各所述数据类型对应的数据的目标数量;/n基于所述容量大小和所述数据类型根据预设规则对所述待存储空间进行分区得到每种数据类型对应的子存储空间的大小和数量,所述待存储空间包括多个所述子存储空间;/n根据各所述子存储空间的大小以及所述数据类型对应的目标数量通过分区规则确定各分区内目标存储空间的大小和数量,所述子存储空间包括多个所述目标存储空间;/n根据各分区内所述目标存储空间的数量设置各分区的随机数,所述随机数包括各分区对应的分区号;/n将预设判断条件和所述随机数标记在所述待存储空间中的各数据上,所述预设判断条件用于判断存储到目标待存储空间中的数据;/n通过随机分组函数分析所述待存储空间中的各数据上标记的内容,以将所述各数据类型对应的数据存储到目标待存储空间中。/n

【技术特征摘要】
1.一种处理数据倾斜的方法,其特征在于,所述方法包括:
预先设置待存储空间的容量大小,设置所述待存储空间中的数据类型和各所述数据类型对应的数据的目标数量;
基于所述容量大小和所述数据类型根据预设规则对所述待存储空间进行分区得到每种数据类型对应的子存储空间的大小和数量,所述待存储空间包括多个所述子存储空间;
根据各所述子存储空间的大小以及所述数据类型对应的目标数量通过分区规则确定各分区内目标存储空间的大小和数量,所述子存储空间包括多个所述目标存储空间;
根据各分区内所述目标存储空间的数量设置各分区的随机数,所述随机数包括各分区对应的分区号;
将预设判断条件和所述随机数标记在所述待存储空间中的各数据上,所述预设判断条件用于判断存储到目标待存储空间中的数据;
通过随机分组函数分析所述待存储空间中的各数据上标记的内容,以将所述各数据类型对应的数据存储到目标待存储空间中。


2.根据权利要求1所述的方法,其特征在于,所述根据各所述子存储空间的大小以及所述数据类型对应的目标数量通过分区规则确定各分区内目标存储空间的大小和数量,包括:
通过分区规则分析所述数据类型对应的目标数量,确定所述子存储空间的划分区域和划分数量,所述划分数量指示各所述划分区域内存储的数据的数量;
根据所述子存储空间的大小计算各所述划分区域的大小,得到各区域大小;
根据所述划分数量对各所述划分区域进行平均划分,得到各所述划分区域中多个目标存储空间,所述各所述划分区域对应的目标存储空间的数量和为各分区内目标存储空间的数量;
根据所述各区域大小计算各所述划分区域对应的目标存储空间的平均大小,得到各分区内目标存储空间的大小。


3.根据权利要求1所述的方法,其特征在于,所述根据各所述子存储空间的大小以及所述数据类型对应的目标数量通过分区规则确定各分区内目标存储空间的大小和数量,包括:
获取所述子存储空间中键Key的量级;
根据所述Key的量级设置数量阈值,所述数量阈值用于指示存储于所述子存储空间中的目标存储空间的最大数量;
将所述数量阈值、所述子存储空间的大小和所述数据类型对应的目标数量作为判断项,并创建所述数量阈值、所述子存储空间的大小和所述数据类型对应的目标数量的对应关系;
根据所述判断项和所述对应关系建立分区规则,并根据所述分区规则和所述对应关系创建划分表;
根据所述对应关系遍历所述划分表,获得各分区内目标存储空间的大小和数量。


4.根据权利要求3所述的方法,其特征在于,所述根据各分区内所述目标存储空间的数量设置各分区的随机数,包括:
获取根据所述划分表获取的各分区内所述目标存储空间的数量;
将各分区内所述目标待存储空间的数量的值设置为各分区的随机数的最大值;
基于所述最大值通过随机函数生成各分区的随机数。


5.根据权利要求1所述的方法,其特征在于,所述预设判断条件,包括:
当检测到一个或一个以上的回调函数对应的数据的数量大于预设平均值时,获取所述回调函数对应的数据的数量为最大值对应的目标key;
将所述目标key重新组合成弹性分布式数据集,并在经过重新组合成弹性分布式数据集的所述目标key的前缀标记所述随机数;
将标记所述随机数为前缀的目标key调到多个任务中进行结合join操作以获取多个操作结果,将多个所述操作结果聚合...

【专利技术属性】
技术研发人员:余可帆
申请(专利权)人:中国平安财产保险股份有限公司
类型:发明
国别省市:广东;44

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

1