CN110442574A - 一种数据处理方法、电子设备和计算机可读存储介质 - Google Patents
一种数据处理方法、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN110442574A CN110442574A CN201910584834.4A CN201910584834A CN110442574A CN 110442574 A CN110442574 A CN 110442574A CN 201910584834 A CN201910584834 A CN 201910584834A CN 110442574 A CN110442574 A CN 110442574A
- Authority
- CN
- China
- Prior art keywords
- data
- hash table
- data item
- hash
- characteristic information
- 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.)
- Granted
Links
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据处理方法、电子设备和计算机可读存储介质,通过将原始数据表分为多个数据段,并根据获取的原始数据表的特征信息初始化多个哈希表,多线程并行处理多个数据段以获取数据处理结果并根据数据处理结果更新所述多个哈希表,合并多个哈希表以获取数据分组聚合结果,由此,本发明实施例通过多线程并行处理原始数据表的多个数据段,并通过哈希表的结构对数据处理结果进行分组聚合,提高了数据分组聚合运算的效率。
Description
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种数据处理方法、电子设备和计算机可读存储介质。
背景技术
在目前的大数据背景下,数据分析需求极大。其中,对数据进行聚合是很多数据分析中的重要步骤。一般来说,数据聚合就是将一些数据按照特定数据项进行分组,如年龄、专业、或者收入等数据项。例如,一个站点销售音乐CD,它可能会基于用户的年龄来将用户分组,然后得到不同年龄的音乐爱好。在数据库的应用中,为了从一张数据表中的大量数据中提取出具有某些具有特征性的数据,最常用的就是对表格数据分组,并对分组后的数据执行相应的运算,例如求每一组的最大值、平均值等信息。
通常情况下,在数据库中执行分组聚合操作涉及的数据量大,现有方法通常采用CPU处理器来进行处理,耗费时间长,数据处理效率低。
发明内容
有鉴于此,本发明实施例提供了一种数据处理方法、电子设备和计算机可读存储介质,以提高数据分组聚合运算的效率。
第一方面,本发明实施例提供一种数据处理方法,所述方法包括:
获取原始数据表的特征信息;
将所述原始数据表分为多个数据段;
根据所述特征信息初始化多个哈希表,其中,所述哈希表用于存储对应的数据段的数据处理结果;
多线程并行处理所述多个数据段以获取数据处理结果;
根据所述数据处理结果更新所述多个哈希表;以及
合并所述多个哈希表以获取数据分组聚合结果。
可选的,根据所述特征信息初始化多个哈希表包括:
根据所述特征信息确定哈希表的长度;以及
根据所述哈希表的长度建立多个空哈希表。
可选的,所述特征信息包括所述原始数据表的至少一个数据项,所述数据项包括至少一个数据项值。
可选的,根据所述特征信息确定哈希表的长度包括:
计算所述数据项值的组合的数量与预设的可变因子的乘积以确定所述哈希表的长度。
可选的,在所述特征信息中的数据项的数量为1时,所述数据项值的组合包括一个数据项值,所述数据项值的组合的数量为所述数据项中的数据项值的个数;
在所述特征信息中的数据项数量大于1时,所述数据项值的组合中包括每个数据项中的一个数据项值,所述数据项值的组合的数量为每个数据项中的数据项值的个数的乘积。
可选的,多线程并行处理所述多个数据段以获取数据处理结果包括:
将加速处理器中的多个线程分为多个线程组,各所述线程组分别包括至少一个线程;
各所述线程组并行处理对应的数据段以获取所述数据处理结果。
可选的,各所述线程组并行处理对应的数据段以获取所述数据处理结果包括:
同一线程组中的不同线程并行处理对应的数据段以获取所述对应的数据段的数据处理结果。
可选的,根据所述数据处理结果更新所述多个哈希表包括:
对于每个数据段,计算所述数据段对应的各数据项值的组合的哈希值以确定各数据项值的组合在对应的哈希表中的地址信息;
根据对应的聚合函数更新所述哈希表。
第二方面,本发明实施例提供一种电子设备,包括存储器、CPU处理器和加速处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述CPU处理器执行以实现以下步骤:
获取原始数据表的特征信息;
将所述原始数据表分为多个数据段;
所述一条或多条计算机指令被所述加速处理器执行以实现以下步骤:
根据所述特征信息初始化多个哈希表,其中,所述哈希表用于存储对应的数据段的数据处理结果;
多线程处理所述多个数据段以获取对应数据处理结果;
根据所述数据处理结果更新所述多个哈希表;
合并所述多个哈希表以获取数据分组结果。
第三方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行以实现如上所述的方法。
本发明实施例通过将原始数据表分为多个数据段,并根据获取的原始数据表的特征信息初始化多个哈希表,多线程并行处理多个数据段以获取数据处理结果并根据数据处理结果更新所述多个哈希表,合并多个哈希表以获取数据分组聚合结果,由此,本发明实施例通过多线程并行处理原始数据表的多个数据段,并通过哈希表的结构对数据处理结果进行分组聚合,提高了数据分组聚合运算的效率。
附图说明
通过以下参照附图对本申请实施例的描述,本申请的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本发明实施例的数据处理方法的流程图;
图2是本发明实施例的数据处理过程的示意图;
图3是本发明实施例的数据处理装置的示意图;
图4是本发明实施例的电子设备的示意图。
具体实施方式
以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1是本发明实施例的数据处理方法的流程图。如图1所示,本发明实施例的数据处理方法包括以下步骤:
步骤S100,获取原始数据表的特征信息。具体地,分析原始数据表,获取其特征信息。其中,特征信息包括原始数据表的至少一个数据项,数据项包括至少一个数据项值。例如,原始数据表为某个学校所有班级的成绩单,数据分组聚合目标为获取各个班级的最高分,则数据项为班级,数据项值为班级的名称,如1班、2班等。
步骤S200,将原始数据表分为多个数据段。原始数据表的数据量较大,因此,在本实施例中,将原始数据表按照预设规则(例如预设的每个数据段的数据量大小等)分为多个数据段。
步骤S300,根据特征信息初始化多个哈希表。其中,哈希表用于存储对应的数据段的数据处理结果。在一种可选的实现方式中,哈希表的数量根据每个数据段所需的存储空间大小、哈希表所需的存储空间大小以及处理器的内存大小确定。在一种可选的实现方式中,步骤S300具体包括:
根据原始数据表的特征信息确定哈希表的长度,并根据哈希表的长度建立多个空哈希表。
在一种可选的实现方式中,计算数据项值的组合的数量与预设的可变因子的乘积以确定哈希表的长度。其中,可变因子用于调整哈希表的填充率。可选的,可变因子的值在1-2之间,例如取可变因子的值为1.5。
在特征信息中的数据项数量为1时,数据项值的组合包括一个数据项值,数据项值的组合的数量为数据项中的数据项值的个数。例如,原始数据表为某个学校的同一个年级的所有班级的成绩单,数据分组聚合目标为获取各个班级的最高分。在此情况下,原始数据表的特征信息包括一个数据项:班级,假设该学校共有10个班级,则数据项值为班级的名称,如1班、2班等。数据项值的组合的数量也为10个。
由此,在特征信息包括一个数据项时,哈希表的长度L为:
L=N*q
其中,L为哈希表的长度,N为预设的可变因子,q为该数据项的数据项值的数量。
在特征信息中的数据项数量大于1时,数据项值的组合中包括每个数据项中的一个数据项值,数据项值的组合的数量为每个数据项中的数据项值的个数的乘积。在特征信息包括至少两个数据项时,哈希表的长度L为:
其中,L为哈希表的长度,N为预设的可变因子,n中特征信息中数据项的个数,qi为第i个数据项的数据项值的数量,1≤i≤n。
例如,原始数据表为某个学校的同一个年级的所有班级的成绩单,数据分组聚合目标为获取各个班级的男生的最高分和女生的最高分。在此情况下,原始数据表的特征信息包括两个数据项:班级和性别,假设该学校共有10个班级,数据项班级对应的数据项值为班级的名称,如1班、2班等,数据项性别对应的数据项值为男生和女生。数据项值的组合包括1班男生、1班女生、2班男生、2班女生等。如上所述,此时,哈希表的个数为:
其中,q1为数据项班级的数据项值的数量,q2的数据项性别的数据项值的数量。
步骤S400,多线程并行处理多个数据段以获取数据处理结果。
步骤S500,根据所述数据处理结果更新所述多个哈希表。具体地,对于每个数据段,计算数据段对应的各数据项值的组合的哈希值以确定各数据项值的组合在对应的哈希表中的地址信息,并根据对应的聚合函数更新所述哈希表。其中,聚合函数可以为求和函数、最值函数、均值函数等。
在本实施例中,采用基于哈希表的方法来对多个数据段进行数据分组聚合。哈希表(Hash table)是根据关键码值(key value)而直接进行访问的数据结果。具体地,给定表M,存在哈希函数f(key),对任意给定的关键字值key,代入哈希函数f(key)后获取该关键字值在表中的地址,则表M为哈希表。
在本实施例中,哈希表具有关键字值key和数据处理结果value。其中,根据至少一个数据项进行分组,则将数据项值的组合作为哈希表的关键字值key,对关键字值key(数据项值的组合)进行哈希函数计算以获取该关键字值key在哈希表中的地址信息index。例如上述的数据项班级和性别,则哈希表的关键字值key为1班男生、1班女生等。容易理解,相同的关键字值key在哈希表中对应的地址信息index相同。
在一种可选的实现方式中,根据哈希表的数量将加速处理器中的多个线程分为多个线程组,各线程组分别包括至少一个线程。其中,各线程组根据对应的聚合函数并行处理对应的数据段以获取对应的数据处理结果。
在一种可选的实现方式中,本实施例的数据处理方法还包括:
将原始数据表的多个数据段传输至加速处理器(例如GPU处理器)的内存中。在本实施例中,每个线程组对应一个哈希表,每个线程组处理至少一个数据段。可选的,在线程组处理一个数据段时,将下一个要处理的数据段传输至加速处理器中以进一步提高数据处理效率。由此,线程组在处理数据时,需要在加速处理器内存中存储两个对应的数据段。假设每个数据段所需的存储空间为s1,每个哈希表所需的存储空间为s2,每个线程组处理数据时所占用的临时存储空间为s3,加速处理器的全局内存大小为S,则哈希表的数量(也即线程组的数量)m满足以下公式:
m*(2s1+s2+s3)<S
可选的,使得m在满足上式的条件下取较大的值以提高数据处理效率。
在本实施例中,对于一个线程组,读入对应的数据段后,同一线程组中的不同线程读取不同的数据,并且同时对关键字值key(数据项值的组合)进行哈希计算以获取其在哈希表中对应的地址信息index。之后每个线程根据预定的聚合函数和地址信息index更新对应的哈希表中的数据处理结果value。例如,若数据处理目标为获取班级中男生和女生的最高成绩,假设某个线程的关键字值key为1班男生,且哈希表中该关键字值key对应的数据处理结果value已经存储了数值a,当前线程得到的数据处理结果的数值为b,则根据预定的聚合函数判断数值a和数值b的大小,若数值b大于数值a,则将哈希表中的该关键字值key对应的数据处理结果value更新为数值b。
容易理解,在本实施例中,多个线程组并行处理不同的数据段,因此多个线程组同时更新不同的哈希表,同一个线程组中的不同的线程并行处理同一个数据段,因此,同一线程组中的不同线程同时更新同一个哈希表。
由于同一个线程组中的多个线程同时处理的数据对应的关键字值key可能相同,也即多个线程获取的地址信息index相同,会同时对哈希表中相同地址信息index对应的数据处理结果value进行更新,为了避免冲突,本实施例采用原子操作对哈希表进行更新。另外,不同的关键字值key经过哈希计算可能获得相同的地址信息index,本实施例采用线性寻址法等冲突处理方法。
原子操作在多线程访问共享资源时,能够确保所有线程不在统一时间内访问相同的资源。原子操作是指不会被线程调度打断的操作,也即原子操作时不可分割的,在执行完毕之前不会被任何其他任务或事件中断。在本实施例中,通过采用原子操作使得在一个线程更新某个地址信息index对应的数据处理结果value时,其他线程不能同时更新该地址信息index对应的数据处理结果value,由此,可以在多个线程同时获取相同的地址信息index时避免线程间形成冲突,保证数据处理的准确性。
步骤S600,合并所述多个哈希表以获取数据分组聚合结果。在本实施例中,多个线程组同时对多个哈希表进行了更新,在所有数据处理完成后,将更新后的多个哈希表进行合并。其中,在合并过程中,只需要根据聚合函数对不同哈希表中相同的关键字值key对应的数据处理结果value进行合并处理即可。其中,聚合函数可以为求和函数、最值函数、均值函数等。
本实施例通过将原始数据表分为多个数据段,并根据获取的原始数据表的特征信息初始化多个哈希表,多线程并行处理多个数据段以获取数据处理结果并根据数据处理结果更新所述多个哈希表,合并多个哈希表以获取数据分组聚合结果,由此,本发明实施例通过多线程并行处理原始数据表的多个数据段,并通过哈希表的结构对数据处理结果进行分组聚合,提高了数据分组聚合运算的效率。
图2是本发明实施例的数据处理过程的示意图。如图2所示,在本实施例中,在CPU处理器中内存中获取原始数据表及其特征信息,并在CPU处理器的内存中将原始数据表分为多个数据段S1、S2等。之后根据原始数据表的特征信息在GPU处理器的内存中初始化多个哈希表hashtable1、hashtable2等,可选的,哈希表的数量根据每个数据段所需的存储空间大小、哈希表所需的存储空间大小以及处理器的内存大小确定。。本实施例以加速处理器为GPU处理器为例进行说明,应理解,能够采用多线程处理快速处理大数据量的加速处理器均可应用于本实施例中。CPU处理器通过总线将待处理的数据段传输至GPU处理器的内存中,GPU处理器根据原先设置的聚合函数(求和函数、比较函数等)采用多线程并行处理多个数据段S1、S2等,并将其数据处理结果写入哈希表的对应地址中以更新哈希表hashtable1、hashtable2等。假设GPU处理器上共有x个线程,m个初始化的哈希表,则将所有线程分配为m个线程组。其中,每个线程组包括x/m个线程。在本实施例中,一个线程组中的多个线程同时访问同一个哈希表,m个线程组分别访问m个哈希表。如图2所示,第一个线程组中的线程并行处理数据段S1中的数据,并访问哈希表hashtable1,第二个线程组中的线程并行处理数据段S2中的数据,并访问哈希表hashtable2。每个线程组中的多个线程同时对同一个数据段中的不同行的关键字值进行哈希函数计算,以获取各行数据分别对应的地址信息index,然后更新该线程组对应的哈希表中的对应地址的关键字值和数据处理结果value值。各线程组中的线程循环读入对应的数据段中的数据并处理,直至整个原始数据表中的所有数据处理完成,以获取更新后的哈希表。最后GPU处理器将多个更新后的哈希表进行合并以获取数据分组聚合结果。
本发明实施例通过多线程并行处理原始数据表的多个数据段,并通过哈希表的结构对数据处理结果进行分组聚合,提高了数据分组聚合运算的效率。
以下实施例对基于GPU处理器的数据分组聚合方法进行具体描述,其中,以对某学校同一年级中各班级中男生和女生的最高成绩进行分组处理(也即本实施例采用的聚合函数为最值函数)为例来对本实施例进行描述。
其中,某学校同一年级的学生的成绩表格如表(1)所示:
表(1)
班级 | 姓名 | 性别 | 成绩 |
1班 | 小一 | 女 | 88 |
2班 | 小二 | 男 | 79 |
2班 | 小三 | 女 | 92 |
1班 | 小四 | 女 | 76 |
1班 | 小五 | 男 | 90 |
...... | ...... | ...... | ...... |
将表(1)分为n个数据段,n大于等于1,假设其中一个数据段S1如表(2)所示:
表(2)
其中,基于各班级的男生和女生的最高分进行分组聚合,也即原始数据表的特征信息包括的数据项为班级和性别,假设该校同一年级共有1班-10班10个班级。
在GPU处理器中初始化m个哈希表,可选的,m小于或等于n。假设预设的可变因子为1.5,则初始化的哈希表的长度L=1.5*10*2=30。初始化的哈希表中的关键字值为NULL,数据处理结果value为0,本实施例中数据处理结果value为各班级中女生或男生的最高分,也即聚合函数为最值函数MAX(score)。
初始化的哈希表结构如表(3)所示:
表(3)
key | value(MAX(score)) |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
…… | …… |
然后CPU处理器将n个数据段通过总线传输至GPU处理器内存中,GPU处理器采用多线程并行处理n个数据段。
可选的,假设GPU处理器上共有x个线程,m个初始化的哈希表,则将所有线程分配为m个线程组。其中,每个线程组包括x/m个线程。在本实施例中,一个线程组中的多个线程同时访问同一个哈希表,m个线程组分别访问m个哈希表。
如上所述,本实施例中的关键字值key分别为1班男生、1班女生、2班男生和2班女生等。GPU处理器的各线程通过对各关键字值进行哈希函数的计算,以获取各关键字值key对应的地址信息index,然后根据最值函数MAX(score)对读取的数据进行处理,将数据处理结果写入关键字值key对应的地址中。
假设处理表(2)中的数据段S1对应的线程组中包括3个线程,同时处理表(2)中的前3行数据,根据这3行数据的数据处理结果更新后的哈希表如表(4)所示:
表(4)
key | value(MAX(score)) |
1班女生 | 88 |
NULL | 0 |
2班女生 | 92 |
2班男生 | 79 |
…… | …… |
之后,数据段S1对应的线程组中的3个线程继续处理表(2)中的第4-第6行数据,根据这3行数据的数据处理结果更新后的哈希表如表(5)所示:
表(5)
key | value(MAX(score)) |
1班女生 | 88 |
1班男生 | 90 |
2班女生 | 92 |
2班男生 | 80 |
…… | …… |
其中,1班中的另一个女生小五的成绩为76,小于1班女生小一的成绩88,因此,哈希表中1班女生的最高分不变,而2班的另一个男生小六的成绩为80,大于2班男生小二的成绩79,因此,哈希表中2班男生的最高分更新为80。
GPU处理器的各线程通过循环读取各数据段的数据,并进行处理,直至将原始数据表中的所有数据处理完毕,获取更新后的多个哈希表,最后将各哈希表中的同一个关键字值key对应的数据处理结果value进行聚合函数处理以获取数据分组聚合结果,如上例所述,将更新后的各哈希表中的各班男生和各班女生的最高分进行比较,从而获取每个班级中的男生最高分和女生最高分。
本实施例通过将原始数据表分为多个数据段,并根据获取的原始数据表的特征信息初始化多个哈希表,多线程并行处理多个数据段以获取数据处理结果并根据数据处理结果更新所述多个哈希表,合并多个哈希表以获取数据分组聚合结果,由此,本发明实施例通过多线程并行处理原始数据表的多个数据段,并通过哈希表的结构对数据处理结果进行分组聚合,提高了数据分组聚合运算的效率。
图3是本发明实施例的数据处理装置的示意图。如图3所示,本实施例的数据处理装置3包括特征信息获取单元31、数据段划分单元32、哈希表初始化单元33、数据处理单元34、哈希表更新单元35和哈希表合并单元36。
其中,信息获取单元31被配置为获取原始数据表的特征信息。其中,所述特征信息包括所述原始数据表的至少一个数据项,所述数据项包括至少一个数据项值。数据段划分单元32被配置为将所述原始数据表分为多个数据段。哈希表初始化单元33被配置为根据所述特征信息初始化多个哈希表,其中,所述哈希表用于存储对应的数据段的数据处理结果。数据处理单元34被配置为多线程并行处理所述多个数据段以获取数据处理结果。哈希表更新单元35被配置为根据所述数据处理结果更新所述多个哈希表。哈希表合并单元36被配置为合并所述多个哈希表以获取数据分组聚合结果。
在一种可选的实现方式中,哈希表初始化单元33进一步被配置为根据所述特征信息确定哈希表的长度,并根据所述哈希表的长度建立多个空哈希表。
在一种可选的实现方式中,哈希表初始化单元33进一步被配置为计算所述数据项值的组合的数量与预设的可变因子的乘积以确定所述哈希表的长度。可选的,在所述特征信息中的数据项数量为1时,所述数据项值的组合包括一个数据项值,所述数据项值的组合的数量为所述数据项中的数据项值的个数。在所述特征信息中的数据项数量大于1时,所述数据项值的组合中包括每个数据项中的一个数据项值,所述数据项值的组合的数量为每个数据项中的数据项值的个数的乘积。
在一种可选的实现方式中,数据处理单元34进一步被配置为将加速处理器中的多个线程分为多个线程组,各所述线程组分别包括至少一个线程。其中,各所述线程组并行处理对应的数据段以获取所述数据处理结果,同一线程组中的不同线程并行处理对应的数据段以获取所述对应的数据段的数据处理结果。
在一种可选的实现方式中,哈希表更新单元35进一步被配置为对于每个数据段,计算所述数据段对应的各数据项值的组合的哈希值以确定各数据项值的组合对应的哈希表中的地址信息,并根据对应的聚合函数更新该哈希表。
本实施例通过将原始数据表分为多个数据段,并根据获取的原始数据表的特征信息初始化多个哈希表,多线程并行处理多个数据段以获取数据处理结果并根据数据处理结果更新所述多个哈希表,合并多个哈希表以获取数据分组聚合结果,由此,本发明实施例通过多线程并行处理原始数据表的多个数据段,并通过哈希表的结构对数据处理结果进行分组聚合,提高了数据分组聚合运算的效率。
图4是本发明实施例的电子设备的示意图。电子设备采用异构系统架构,本实施例的电子设备4以采用CPU+GPU异构系统架构为例进行说明。如图4所示,电子设备4:至少包括一个CPU处理器41至少一个GPU处理器42;以及,与CPU处理器41和GPU处理器42通信连接的存储器43;以及,与扫描装置通信连接的通信组件44,通信组件44在CPU处理器41或GPU处理器42的控制下接收和发送数据;其中,存储器43存储有可被至少一个CPU处理器41或GPU处理器42执行的指令,指令被至少一个CPU处理器41执行以实现以下步骤:
获取原始数据表的特征信息;
将所述原始数据表分为多个数据段。
指令被至少一个GPU处理器42执行以实现以下步骤:
根据所述特征信息初始化多个哈希表,其中,所述哈希表用于存储对应的数据段的数据处理结果;
多线程处理所述多个数据段以获取对应数据处理结果;
根据所述数据处理结果更新所述多个哈希表;
合并所述多个哈希表以获取数据分组结果。
其中,CPU处理器通过总线将多个数据段传输至GPU处理器的内存中。
具体地,电子设备4包括:一个或多个CPU处理器41、一个或多个GPU处理器42以及存储器43,图4中以包括一个CPU处理器41和一个GPU处理器42为例,其中CPU处理器或GPU处理器用于执行本实施例中的数据处理方法的至少一个步骤。CPU处理器41、GPU处理器42和存储器43可以通过总线或者其他方式连接,图4中以通过总线连接为例。存储器43作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。CPU处理器41或GPU处理器42通过运行存储在存储器43中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现本发明实施例的数据处理方法。
存储器43可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器43可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器43可选包括相对于CPU处理器41和/或GPU处理器42远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器43存储有一个或者多个单元,当一个或者多个单元被CPU处理器41或GPU处理器42执行时,执行上述任意方法实施方式中的数据处理方法。
本发明的另一个实施例涉及一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的方法。
以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域技术人员而言,本申请可以有各种改动和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
获取原始数据表的特征信息;
将所述原始数据表分为多个数据段;
根据所述特征信息初始化多个哈希表,其中,所述哈希表用于存储对应的数据段的数据处理结果;
多线程并行处理所述多个数据段以获取数据处理结果;
根据所述数据处理结果更新所述多个哈希表;以及
合并所述多个哈希表以获取数据分组聚合结果。
2.根据权利要求1所述的方法,其特征在于,根据所述特征信息初始化多个哈希表包括:
根据所述特征信息确定哈希表的长度;以及
根据所述哈希表的长度建立多个空哈希表。
3.根据权利要求2所述的方法,其特征在于,所述特征信息包括所述原始数据表的至少一个数据项,所述数据项包括至少一个数据项值。
4.根据权利要求3所述的方法,其特征在于,根据所述特征信息确定哈希表的长度包括:
计算所述数据项值的组合的数量与预设的可变因子的乘积以确定所述哈希表的长度。
5.根据权利要求4所述的方法,其特征在于,在所述特征信息中的数据项的数量为1时,所述数据项值的组合包括一个数据项值,所述数据项值的组合的数量为所述数据项中的数据项值的个数;
在所述特征信息中的数据项数量大于1时,所述数据项值的组合中包括每个数据项中的一个数据项值,所述数据项值的组合的数量为每个数据项中的数据项值的个数的乘积。
6.根据权利要求1所述的方法,其特征在于,多线程并行处理所述多个数据段以获取数据处理结果包括:
将加速处理器中的多个线程分为多个线程组,各所述线程组分别包括至少一个线程;
各所述线程组并行处理对应的数据段以获取所述数据处理结果。
7.根据权利要求6所述的方法,其特征在于,各所述线程组并行处理对应的数据段以获取所述数据处理结果包括:
同一线程组中的不同线程并行处理对应的数据段以获取所述对应的数据段的数据处理结果。
8.根据权利要求5所述的方法,其特征在于,根据所述数据处理结果更新所述多个哈希表包括:
对于每个数据段,计算所述数据段对应的各数据项值的组合的哈希值以确定各数据项值的组合在对应的哈希表中的地址信息;
根据对应的聚合函数更新所述哈希表。
9.一种电子设备,包括存储器、CPU处理器和加速处理器,其特征在于,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述CPU处理器执行以实现以下步骤:
获取原始数据表的特征信息;
将所述原始数据表分为多个数据段;
所述一条或多条计算机指令被所述加速处理器执行以实现以下步骤:
根据所述特征信息初始化多个哈希表,其中,所述哈希表用于存储对应的数据段的数据处理结果;
多线程处理所述多个数据段以获取对应数据处理结果;
根据所述数据处理结果更新所述多个哈希表;
合并所述多个哈希表以获取数据分组结果。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行以实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910584834.4A CN110442574B (zh) | 2019-07-01 | 2019-07-01 | 一种数据处理方法、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910584834.4A CN110442574B (zh) | 2019-07-01 | 2019-07-01 | 一种数据处理方法、电子设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110442574A true CN110442574A (zh) | 2019-11-12 |
CN110442574B CN110442574B (zh) | 2022-05-03 |
Family
ID=68429341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910584834.4A Active CN110442574B (zh) | 2019-07-01 | 2019-07-01 | 一种数据处理方法、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110442574B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111198882A (zh) * | 2019-12-26 | 2020-05-26 | 东软集团股份有限公司 | 数据的处理方法、装置、存储介质和电子设备 |
CN111831861A (zh) * | 2020-07-15 | 2020-10-27 | 中兴飞流信息科技有限公司 | 一种大数据领域使用gpu实现多分组数据排序的方法 |
CN111949681A (zh) * | 2020-06-22 | 2020-11-17 | 中科驭数(北京)科技有限公司 | 数据的聚合处理装置、方法和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294831A (zh) * | 2013-06-27 | 2013-09-11 | 中国人民大学 | 列存储数据库中基于多维数组的分组聚集计算方法 |
US20140052726A1 (en) * | 2012-08-20 | 2014-02-20 | Philip Amberg | Hardware implementation of the aggregation/group by operation: hash-table method |
CN106844533A (zh) * | 2016-12-29 | 2017-06-13 | 北京师范大学 | 一种数据分组聚集方法及装置 |
CN109388609A (zh) * | 2018-09-30 | 2019-02-26 | 中科驭数(北京)科技有限公司 | 基于加速核的数据处理方法和装置 |
-
2019
- 2019-07-01 CN CN201910584834.4A patent/CN110442574B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140052726A1 (en) * | 2012-08-20 | 2014-02-20 | Philip Amberg | Hardware implementation of the aggregation/group by operation: hash-table method |
CN103294831A (zh) * | 2013-06-27 | 2013-09-11 | 中国人民大学 | 列存储数据库中基于多维数组的分组聚集计算方法 |
CN106844533A (zh) * | 2016-12-29 | 2017-06-13 | 北京师范大学 | 一种数据分组聚集方法及装置 |
CN109388609A (zh) * | 2018-09-30 | 2019-02-26 | 中科驭数(北京)科技有限公司 | 基于加速核的数据处理方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111198882A (zh) * | 2019-12-26 | 2020-05-26 | 东软集团股份有限公司 | 数据的处理方法、装置、存储介质和电子设备 |
CN111949681A (zh) * | 2020-06-22 | 2020-11-17 | 中科驭数(北京)科技有限公司 | 数据的聚合处理装置、方法和存储介质 |
WO2021258512A1 (zh) * | 2020-06-22 | 2021-12-30 | 中科驭数(北京)科技有限公司 | 数据的聚合处理装置、方法和存储介质 |
CN111831861A (zh) * | 2020-07-15 | 2020-10-27 | 中兴飞流信息科技有限公司 | 一种大数据领域使用gpu实现多分组数据排序的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110442574B (zh) | 2022-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yang et al. | Experimental study on the five sort algorithms | |
CN110442574A (zh) | 一种数据处理方法、电子设备和计算机可读存储介质 | |
US20210158164A1 (en) | Finding k extreme values in constant processing time | |
US9747305B2 (en) | Image search device, image search method, program, and computer-readable storage medium | |
Ling et al. | Design and implementation of a CUDA-compatible GPU-based core for gapped BLAST algorithm | |
CN105893561A (zh) | 一种排序方法和装置 | |
CN104160396B (zh) | 在字符串集之中查找最佳匹配字符串的方法和系统 | |
CN106202548A (zh) | 数据存储方法、查找方法及装置 | |
CN110032650B (zh) | 一种训练样本数据的生成方法、装置及电子设备 | |
US9607026B2 (en) | Automatic layout derivation and implementation | |
CN110675017A (zh) | 基于人工智能的绩效评价方法和装置 | |
CN112906865B (zh) | 神经网络架构搜索方法、装置、电子设备及存储介质 | |
CN108959453A (zh) | 基于文本聚类的信息提取方法、装置及可读存储介质 | |
US8072454B1 (en) | Parallel processing system, method, and computer program product for selecting a ray tracing entity from a group of ray tracing entities for processing | |
CN106126943B (zh) | 基于关联症状推导的病情采集方法 | |
CN109635004B (zh) | 一种数据库的对象描述提供方法、装置及设备 | |
US10089342B2 (en) | Main memory database management using page index vectors | |
CN109284497B (zh) | 用于识别自然语言的医疗文本中的医疗实体的方法和装置 | |
Leitao et al. | GPU acceleration of the stochastic grid bundling method for early-exercise options | |
US20170293657A1 (en) | Accelerating Queries with Zone Map Enhancements | |
US11068484B2 (en) | Accelerating queries with complex conditions using zone map enhancements | |
US20160275172A1 (en) | Non-transitory computer-readable recording medium, data classifying method, and data classifying device | |
JP7213890B2 (ja) | 高速化された大規模な類似度計算 | |
US9436731B2 (en) | Index-based optimization of convex hull and minimum bounding circle queries | |
CN115099965A (zh) | 基于基金行业配置的相似基金筛选方法、系统、电子设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |