大数据聚集计算方法及装置制造方法及图纸

技术编号:21658332 阅读:29 留言:0更新日期:2019-07-20 05:33
本发明专利技术实施例提供一种大数据聚集计算方法及装置,所述方法包括:从内存中读取任一行未进行聚集计算的原始数据,根据操作原始数据的SQL语句中的分组字段,对读取的所述原始数据进行分组;若所述原始数据所属分组的key值在所述内存的hash结构中不存在,则申请内存以存储key值和key值对应的聚集计算结果;若申请到内存,则将所述key值存储到所述hash结构中,将所述原始数据经过所述SQL语句中的聚集函数计算获取的聚集计算结果存储到申请的内存中,直到所述mdp数据结构中的所有原始数据都进行聚集计算。本发明专利技术实施例充分利用内存,提高了运算效率。

Large Data Aggregation Computing Method and Device

【技术实现步骤摘要】
大数据聚集计算方法及装置
本专利技术实施例属于大数据分析
,更具体地,涉及一种大数据聚集计算方法及装置。
技术介绍
在做大数据分析时,经常会涉及到对相同数据进行聚集计算,聚集计算是指根据一列或者多列作为key值,对相同key值对应的value值做sum、count、max和min等聚集函数的运算,输出单个结果行。由于大数据分析中原始数据的数据量过于庞大,在分组的key值基数也很大的情况下,计算机剩余内存可能不足以存放下所有要计算的数据。现有技术可能会每次计算指定个数的key值,这种方法可能会造成申请不到内存从而导致系统崩溃的问题,也有可能造成没有充分利用内存计算,会严重影响运算效率。为了克服这个问题,现有技术可能会在做聚集计算时,确定计算机此时剩余多少内存,利用该时刻剩余内存量来进行计算,这种做法虽然不会存在申请不到内存的问题,也充分利用了此刻的内存。但是在计算过程中,计算机很可能又释放出很多空闲的内存,而这些空闲内存没有得到利用。综上所述,现有技术仅对某一时刻剩余的内存量进行了充分利用,在计算过程中释放出的空闲内存没有得到利用,从而导致内存利用率较低。
技术实现思路
为克服上述现有的大数据聚集计算内存利用率低的问题或者至少部分地解决上述问题,本专利技术实施例提供一种大数据聚集计算方法及装置。根据本专利技术实施例的第一方面,提供一种大数据聚集计算方法,包括:从内存的mdp数据结构中读取任一行未进行聚集计算的原始数据,根据操作所述原始数据的SQL语句中的分组字段,对读取的所述原始数据进行分组;若所述原始数据所属分组的key值在所述内存的hash结构中不存在,则为所述hash结构申请内存以存储所述key值,为所述内存中的tupleRowStream结构申请内存创建tupleRow结构以存储所述分组的聚集计算结果;若为所述hash结构和所述内存中的tupleRowStream结构都成功申请到内存,则将所述key值存储到所述hash结构中,将所述原始数据经过所述SQL语句中的聚集函数计算获取的聚集计算结果存储到所述tupleRow结构中,直到所述mdp数据结构中的所有原始数据都进行聚集计算。根据本专利技术实施例第二方面提供一种大数据聚集计算装置,包括:分组模块,用于从内存的mdp数据结构中读取任一行未进行聚集计算的原始数据,根据操作所述原始数据的SQL语句中的分组字段,对读取的所述原始数据进行分组;申请模块,用于若所述原始数据所属分组的key值在所述内存的hash结构中不存在,则为所述hash结构申请内存以存储所述key值,为所述内存中的tupleRowStream结构申请内存创建tupleRow结构以存储所述分组的聚集计算结果;存储模块,用于若为所述hash结构和所述内存中的tupleRowStream结构都成功申请到内存,则将所述key值存储到所述hash结构中,将所述原始数据经过所述SQL语句中的聚集函数计算获取的聚集计算结果存储到所述tupleRow结构中,直到所述mdp数据结构中的所有原始数据都进行聚集计算。根据本专利技术实施例的第三个方面,还提供一种电子设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的大数据聚集计算方法。本专利技术实施例提供一种大数据聚集计算方法及装置,该方法通过每读取一行为进行聚集计算的原始数据,就对该行数据进行分组,结合hash技术判断该行数据所属的分组是否为一个新分组,若为一个新分组则根据内存使用情况判断剩余内存是否可以存放下一个新分组的key值和聚集计算结果,若能存放下则进行聚集计算,并对聚集计算结果和key值进行保存,从而每读取到一行原始数据就实时根据内存情况进行聚集计算,最大限度地使用内存,提高了运算效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的大数据聚集计算方法整体流程示意图;图2为本专利技术实施例提供的大数据聚集计算装置整体结构示意图;图3为本专利技术实施例提供的电子设备整体结构示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在本专利技术的一个实施例中提供一种大数据聚集计算方法,图1为本专利技术实施例提供的大数据聚集计算方法整体流程示意图,该方法包括:S101,从内存的mdp数据结构中读取任一行未进行聚集计算的原始数据,根据操作所述原始数据的SQL语句中的分组字段,对读取的所述原始数据进行分组;其中,mdp(MemoryDataPack,内存数据包)数据结构是内存中传输数据的结构,可以从中取出一行数据,也可以取出一行中指定列的数据。mdp数据结构中存储的是原始数据,即没有经过分组和聚集计算的数据。mdp数据结构为一张二维表,例如,学生表的mdp数据结构中存储有学生的学号、姓名、班级和年龄。每一列对应学生的一个属性,例如第一列为学生的学号,第二列为学生的姓名,第三列为学生所在班级,第四列为学生的年龄。每一行为某一学生的学号、姓名、班级和年龄。从mdp数据结构中每次读取一行未进行聚集计算的原始数据,可以任意读取,也可以按照某种排序读取。例如读取的一行数据为学号为20160011,姓名张三,班级一年级,年龄6岁。获取操作该mdp数据结构的SQL(StructuredQueryLanguage,结构化查询语言)语句,例如,selectcount(学号),sum(年龄),max(年龄)fromstudentgroupby班级,groupby后面的字段班级为分组字段,student为表名。通过SQL语句中的分组字段对读取的一行原始数据进行分组,如通过班级对读取的一行数据进行分组,获知学号为20160011的学生张三属于分组类别一年级。S102,若所述原始数据所属分组的key值在所述内存的hash结构中不存在,则为所述hash结构申请内存以存储所述key值,为所述内存中的tupleRowStream结构申请内存创建tupleRow结构以存储所述分组的聚集计算结果;其中,hash结构一般翻译为散列,也有直接音译为哈希,是指将任意长度的输入通过散列算法变换成指定长度的输出,该输出就是散列值。分组的key值为分组的唯一标识。本实施例中在内存中创建有hash结构,以存储在hash结构中分组的key值作为hash结构的key值。hash结构的任一key值对应的value值为一个tupleRow的指针,该指针指向该key值对应的聚集计算结果。同时,在内存中创建有tupleRowStream结构。内存中的tupleRowStream结构用于在本文档来自技高网...

【技术保护点】
1.一种大数据聚集计算方法,其特征在于,包括:从内存的mdp数据结构中读取任一行未进行聚集计算的原始数据,根据操作所述原始数据的SQL语句中的分组字段,对读取的所述原始数据进行分组;若所述原始数据所属分组的key值在所述内存的hash结构中不存在,则为所述hash结构申请内存以存储所述key值,为所述内存中的tupleRowStream结构申请内存创建tupleRow结构以存储所述分组的聚集计算结果;若为所述hash结构和所述内存中的tupleRowStream结构都成功申请到内存,则将所述key值存储到所述hash结构中,将所述原始数据经过所述SQL语句中的聚集函数计算获取的聚集计算结果存储到所述内存中的tupleRow结构中,直到所述mdp数据结构中的所有原始数据都进行聚集计算。

【技术特征摘要】
1.一种大数据聚集计算方法,其特征在于,包括:从内存的mdp数据结构中读取任一行未进行聚集计算的原始数据,根据操作所述原始数据的SQL语句中的分组字段,对读取的所述原始数据进行分组;若所述原始数据所属分组的key值在所述内存的hash结构中不存在,则为所述hash结构申请内存以存储所述key值,为所述内存中的tupleRowStream结构申请内存创建tupleRow结构以存储所述分组的聚集计算结果;若为所述hash结构和所述内存中的tupleRowStream结构都成功申请到内存,则将所述key值存储到所述hash结构中,将所述原始数据经过所述SQL语句中的聚集函数计算获取的聚集计算结果存储到所述内存中的tupleRow结构中,直到所述mdp数据结构中的所有原始数据都进行聚集计算。2.根据权利要求1所述的方法,其特征在于,所述mdp数据结构为二维表结构;所述hash结构的key值为存储在所述hash结构中分组的key值,所述hash结构的key值对应的value值为tupleRow指针,所述tupleRow指针指向所述key值对应的聚集计算结果;所述内存中的tupleRowStream结构包含多个tupleRow结构,各所述tupleRow结构的列数等于所述聚集函数的个数,各所述tupleRow结构用于存储一个所述分组的聚集计算结果。3.根据权利要求1所述的方法,其特征在于,为所述hash结构申请内存,为所述内存中的tupleRowStream结构申请内存创建tupleRow结构的步骤具体包括:根据所述key值的类型,确定为所述hash结构申请内存的大小;根据所述聚集计算结果的类型,确定为所述内存中的tupleRowStream结构申请内存的大小。4.根据权利要求1所述的方法,其特征在于,将所述原始数据经过所述SQL语句中的聚集函数计算获取的聚集计算结果存储到所述tupleRow结构中的步骤具体包括:若所述tupleRow结构中的任一列存储聚集函数count的聚集计算结果,则将该列的值初始化为1;若所述tupleRow结构中的任一列存储聚集函数sum的聚集计算结果,则将读取的所述原始数据中sum函数的参数字段对应的值作为该列的值;若所述tupleRow结构中的任一列存储聚集函数max的聚集计算结果,则将读取的所述原始数据中max函数的参数字段对应的值作为该列的值。5.根据权利要求1所述的方法,其特征在于,还包括:若所述原始数据所属分组的key值在所述内存的hash结构中存在,则使用所述聚集函数对读取的所述原始数据和所述key值对应的聚集计算结果进行聚集计算,获取最新的聚集计算结果;将所述最新的聚集计算结果作为所述key值对应的聚集计算结果。6.根据权利要求5所述的方法,其特征在于,使用所述聚集函数对读取的所述原始数据和所述key值对应的聚集计算结果进行聚集计算,获取最新的聚集计算结果的步骤具体包括:若所述tupleRow结构中的任一列存储聚集函数count的聚集计算结果,则将该列中的聚集计算结果加1,获取该列最新的聚集计算结果;若所述tupleRow结构中的任一列...

【专利技术属性】
技术研发人员:杨鹏董隆超郭志弘
申请(专利权)人:北京东方国信科技股份有限公司
类型:发明
国别省市:北京,11

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

1