CN112115099B - 数据归一化方法、装置、计算机可读介质和电子设备 - Google Patents

数据归一化方法、装置、计算机可读介质和电子设备 Download PDF

Info

Publication number
CN112115099B
CN112115099B CN202010821129.4A CN202010821129A CN112115099B CN 112115099 B CN112115099 B CN 112115099B CN 202010821129 A CN202010821129 A CN 202010821129A CN 112115099 B CN112115099 B CN 112115099B
Authority
CN
China
Prior art keywords
data
key value
value pairs
initial
result array
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.)
Active
Application number
CN202010821129.4A
Other languages
English (en)
Other versions
CN112115099A (zh
Inventor
李泽荃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
North China Institute of Science and Technology
Original Assignee
North China Institute of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by North China Institute of Science and Technology filed Critical North China Institute of Science and Technology
Priority to CN202010821129.4A priority Critical patent/CN112115099B/zh
Publication of CN112115099A publication Critical patent/CN112115099A/zh
Application granted granted Critical
Publication of CN112115099B publication Critical patent/CN112115099B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据归一化方法、装置、计算机可读介质和电子设备。该方法包括:基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据;其中,所述待处理数据的格式为分布式文件系统支持的格式,所述初始数据包含多个键不相同的第一键值对;基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,其中,所述待处理数据的归一化数据包含多个所述第二键值对。籍此,实现对分布式储存的海量级数据的归一化。

Description

数据归一化方法、装置、计算机可读介质和电子设备
技术领域
本申请涉及数据处理技术领域,特别涉及一种数据归一化方法、装置、计算机可读介质和电子设备。
背景技术
传统的数据归一化(从数据中提取跟个体有关的属性特征以及个体和个体间的关联关系,从而对数据进行特征梳理和归纳),需要归纳提取数据中的节点和关系,最终生成图表,最常用的是利用图数据库生成图表。利用这种方法,需要将图数据库中数据的信息属性合并到一个个体(归一化对象)的若干节点(vertex)上,同时建立这若干个节点间的关系(edge),最后,生成所需要的图表(graph)。
目前,生成这种结果一般多采用具备graph、vertex、edge的网络型数据结构,比如:mongodb、neo4j等图数据库,对数据进行逐条记录逐个属性提取节点(vertex)和关系(edge),将提取节点(vertex)和关系(edge)导入图数据库中,按照图数据库自身的方法生成图表(graph)。
但是,对于海量级数据(太字节(TB,计算机存储单位)及以上数据)来说,往往记录量一般都在百亿或者千亿条以上,生成的vertex和edge将会达到万亿甚至十万亿、百万亿的量级,即便是存储方式和应用方式一般是非分布式的,利用mongodb、neo4j等图数据库对这个量级的数据也难以处理;而虽然graphx是基于spark的分布式的图数据库,但在对海量级数据进行处理时,生成图数据库的过程也非常繁琐,生成graph很难实现。
发明内容
有鉴于此,本申请实施例提供一种土壤水分反演方法、装置、计算机可读介质和电子设备,用以解决或缓解上述技术中存在的技术问题。
本申请实施例提供一种数据归一化方法,包括:基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据;其中,所述待处理数据的格式为分布式文件系统支持的格式,所述初始数据包含多个键不相同的第一键值对;基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,其中,所述待处理数据的归一化数据包含多个所述第二键值对。
在一些可选实施例中,所述基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据,包括:基于MapReduce计算架构,对分布式存储的所述待处理数据进行分割处理,得到第一结果数组;建立所述第一结果数组的要素标记数组,其中,所述要素标记数组中的要素标记与所述第一结果数组中的元素一一对应;根据所述第一结果数组和所述要素标记数组,得到第二结果数组,其中,所述第二结果数组中包含的每个元素由所述第一结果数组中的非空值元素、所述非空值元素对应的所述要素标记数组中的所述要素标记拼接得到;对所述第二结果数组进行遍历,提取所述第二结果数组中的每个元素,将所述第二结果数组中的每个元素与所述第二结果数组组成一个第一初始键值对;对多个所述第一初始键值对进行转化,得到多个键不相同的第一键值对,其中,多个所述第一键值对构成所述初始数据。
在一些可选实施例中,所述根据所述第一结果数组和所述要素标记数组,得到第二结果数组,包括:提取所述第一结果数组中的非空值元素,以及,所述非空值元素对应的所述要素标记数组中的所述要素标记;对所述非空值元素和所述非空值元素对应的所述要素标记进行拼接,构成所述第二结果数组的多个元素,以得到所述第二结果数组。
在一些可选实施例中,所述对多个所述第一初始键值对进行转化,得到多个键不相同的第一键值对,包括:对多个所述第一初始键值对中键相同的所述第一初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,得到多个键不相同的所述第一键值对。
在一些可选实施例中,所述基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,包括:基于MapReduce计算架构,提取所述初始数据中的多个所述第一键值对的值,生成中间结果数组;对所述中间结果数组进行遍历,提取所述中间结果数组中的每一个元素,将所述中间结果数组中的每个元素与所述中间结果数组组成一个第二初始键值对;对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据。
在一些可选实施例中,所述对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个所述第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据,包括:根据所述待处理数据中的第i个数据要素,对所述第i个数据要素对应的多个所述第二初始键值对中相同的值进行并集处理,并对并集处理的结果进行去重处理,生成所述第i个数据要素的多个所述第二键值对,由所述第i个数据要素的多个所述第二键值对构成所述待处理数据的所述第i个数据要素的归一化数据,其中,i为正整数;基于MapReduce计算架构,对所述第i个数据要素的多个所述第二键值对进行转化,生成第i+1个数据要素的多个所述第二键值对,由所述第i+1个数据要素的多个所述第二键值对构成所述待处理数据的所述第i+1个数据要素的归一化数据。
在一些可选实施例中,所述基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据之后,还包括:基于MapReduce计算架构,根据所述归一化数据,得到多个第三初始键值对,其中,每个所述第三初始键值对的键为所述归一化数据中的一个所述第二键值对的值转化得到的元组,每个所述第三初始键值对的值为空值;对多个所述第三初始键值对进行并集处理,并对并集处理的结果进行去重,生成多个第三键值对,由多个所述第三键值对构成去重的所述归一化数据。
本申请实施例还提供一种数据归一化装置,包括:初始数据单元,配置为基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据;其中,所述待处理数据的格式为分布式文件系统支持的格式,所述初始数据包含多个键不相同的第一键值对;归一化数据单元,配置为基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,其中,所述待处理数据的归一化数据包含多个所述第二键值对。
本申请实施例还提供一种计算机可读介质,其上存储有计算机程序,所述程序为如上述任一所述的数据归一化方法。
本申请实施例还提供一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时如上述任一所述的数据归一化方法。
与最接近的现有技术相比,本申请实施例的技术方案具有如下有益效果:
本申请实施例提供的数据归一化方法、装置、计算机可读介质和电子设备,对待处理数据进行归一化时,基于MapReduce计算架构,采用分布式计算对分布式存储的每一条数据进行计算,得到包含多个键不相同的第一键值对的初始数据;然后,再基于MapReduce计算架构,将初始数据中的第一键值对转化为多个第二键值对,完成对待处理数据的归一化,实现对分布式储存的海量级数据的归一化。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。其中:
图1为根据本申请的一些实施例提供的数据归一化方法的流程示意图;
图2为根据本申请的一些实施例提供的数据归一化方法中步骤S101的流程示意图;
图3为根据本申请的一些实施例提供的数据归一化方法中步骤S131的流程示意图;
图4为根据本申请的一些实施例提供的数据归一化方法中步骤S102的流程示意图;
图5为根据本申请的一些实施例提供的数据归一化方法中步骤S132的流程示意图;
图6为根据本申请的一些实施例提供的数据归一化装置的结构示意图;
图7为根据本申请的一些实施例提供的初始数据单元的结构示意图;
图8为根据本申请的一些实施例提供的第二结果数组子单元的结构示意图;
图9为根据本申请的一些实施例提供的归一化数据单元的结构示意图;
图10为根据本申请的一些实施例提供的第二键值对子单元的结构示意图;
图11为根据本申请的一些实施例提供的电子设备的结构示意图;
图12为根据本申请的一些实施例提供的电子设备的硬件结构。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将参考附图并结合实施例来详细说明本申请。各个示例通过本申请的解释的方式提供而非限制本申请。实际上,本领域的技术人员将清楚,在不脱离本申请的范围或精神的情况下,可在本申请中进行修改和变型。例如,示为或描述为一个实施例的一部分的特征可用于另一个实施例,以产生又一个实施例。因此,所期望的是,本申请包含归入所附权利要求及其等同物的范围内的此类修改和变型。
首选,需要说明的是,本申请实施例中提供的数据归一化方法中,是基于MapReduce计算架构对数据进行分布式计算,直接基于MapReduce计算架构的工具包括MapReduce(简称MR)、Spark、Dpark等,但是,间接使用MapReduce计算架构的工具如数据仓库工具(Hive)、SparkSQL等不能实现本申请实施例。因为Hive、SparkSQL等工具是基于通用结构化查询语言(StructuredQueryLanguage,简称SQL)工作的,这些工具会将SQL转化成基于MapReduce架构的任务实现,但不是直接基于MapReduce架构实现的。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
本申请实施例中,分别以分布式存储的待处理数据‘M||N|||P||Q|’(仅包含一条记录数据);和分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’(包含多条记录数据)为例进行说明。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
示例性方法
图1为根据本申请的一些实施例提供的数据归一化方法的流程示意图;如图1所示,该数据归一化方法包括:
步骤S101、基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据;其中,所述待处理数据的格式为分布式文件系统支持的格式,所述初始数据包含多个键不相同的第一键值对;
在本申请实施例中,待处理数据分布式存储,保存在分布式文件系统(HadoopDistributedFileSystem,简称HDFS)上,以便基于MapReduce计算架构进行分布式计算。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,初始数据中包含多个第一键值对,第一键值对的格式可以为TextFile、SequenceFile、ParquetFile、ORCFile等所有Hadoop(基于HDFS的分布式系统架构)支持的文件格式;第一键值对的的压缩方式可以为支持lzo、lz4、snappy、gzip、bzip等所有Hadoop支持的文件压缩方式。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,多个第一键值对的键不相同,可以有效避免初始数据中的元素重复。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,待处理数据为分布式存储的数据的集合,基于MapReduce计算架构,对分布式存储的待处理数据中的每一条数据进行分布式计算,然后将分布式计算的结果进行合并,得到初始数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
图2为根据本申请的一些实施例提供的数据归一化方法中步骤S101的流程示意图;如图2所示,所述基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据,包括:
步骤S111、对分布式存储的所述待处理数据进行分割处理,得到第一结果数组;
在本申请实施例中,在对分布式存储的所述待处理数据进行分割处理,得到第一结果数组时,通过对分布式存的所述待处理数据以分隔符进行拆解,得到所述第一结果数组。其中,待处理数据为分布式存储的数据的集合,每一条分布式存储的待处理数据的分割处理,均生成对应的第一结果数组。比如,对分布式存储的待处理数据‘M||N|||P||Q|’进行分割处理时,以分隔符“|”对待处理数据‘M||N|||P||Q|’进行拆解,得到的第一结果数组为[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]。
再比如,对分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’进行分割处理时,以分隔符“|”对待处理数据‘A|||||||||’进行拆解,得到的第一结果数组为[‘A’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’];以分隔符“|”对待处理数据‘A|||B||||||’进行拆解,得到的第一结果数组为[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’];以分隔符“|”对待处理数据‘|||B|||C|||’进行拆解,得到的第一结果数组为[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’];以分隔符“|”对待处理数据‘||||||C|D||’进行拆解,得到的第一结果数组为[‘’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
步骤S121、建立所述第一结果数组的要素标记数组,其中,所述要素标记数组中的要素标记与所述第一结果数组中的元素一一对应;
在本申请实施例中,在建立所述第一结果数组的要素标记数组时,通过对所述第一结果数组中的每个元素(包括非空值元素和空值元素)分别进行要素标记,以得到所述第一结果数组的要素标记数组。比如,对第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]中的每个元素分别进行要素标记,生成的第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]的要素标记数组为[‘F1’,‘F2’,‘F3’,‘F4’,‘F5’,‘F6’,‘F7’,‘F8’,‘F9’,‘F10’],其中,第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]中的非空值元素‘M’对应的要素标记数组中的要素标记为‘F1’,第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]中的非空值元素‘N’对应的要素标记数组中的要素标记为‘F3’,第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]中的非空值元素‘P’对应的要素标记数组中的要素标记为‘F6’,第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]中的非空值元素‘Q’对应的要素标记数组中的要素标记为‘F9’。
再比如,对第一结果数组[‘A’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’]中的每个元素分别进行要素标记,生成的第一结果数组[‘A’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,]的要素标记数组为[‘F1’,‘F2’,‘F3’,‘F4’,‘F5’,‘F6’,‘F7’,‘F8’,‘F9’,‘F10’],其中,第一结果数组[‘A’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’]中的非空值元素‘A’对应的要素标记数组中的要素标记为’F1’;对第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]中的每个元素分别进行要素标记,生成的第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]的要素标记数组为[‘F1’,‘F2’,‘F3’,‘F4’,‘F5’,‘F6’,‘F7’,‘F8’,‘F9’,‘F10’],其中,第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]中的非空值元素‘A’对应的要素标记数组中的要素标记为‘F1’,第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]中的非空值元素‘B’对应的要素标记数组中的要素标记为‘F4’。
对第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]中的每个元素分别进行要素标记,生成的第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]的要素标记数组为[‘F1’,‘F2’,‘F3’,‘F4’,‘F5’,‘F6’,‘F7’,‘F8’,‘F9’,‘F10’],其中,第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]中的非空值元素‘B’对应的要素标记数组中的要素标记为‘F4’,第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]中的非空值元素‘C’对应的要素标记数组中的要素标记为‘F7’。
对第一结果数组[‘’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]中的每个元素分别进行要素标记,生成的第一结果数组[‘’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]的要素标记数组为[‘F1’,‘F2’,‘F3’,‘F4’,‘F5’,‘F6’,‘F7’,‘F8’,‘F9’,‘F10’],其中,第一结果数组[’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]中的非空值元素‘C’对应的要素标记数组中的要素标记为‘F7’,第一结果数组[’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]中的非空值元素‘D’对应的要素标记数组中的要素标记为‘F8’。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
步骤S131、根据所述第一结果数组和所述要素标记数组,得到第二结果数组,其中,所述第二结果数组中包含的每个元素由所述第一结果数组中的非空值元素、所述非空值元素对应的所述要素标记数组中的所述要素标记拼接得到;
在本申请实施例中,在第一结果数组中的空值元素,表征在待处理数据中没有这个vertex,也就没有关于这个vertex的edge。通过对第一结果数组的非空值元素、要素标记数组中非空值元素对应的要素标记进行拼接,构成第二结果数组的元素,使得到的第二结果数组中不再包含非空值元素。籍此,将待处理数据中所有可能建立vertex和edge的内容全部提取出来。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
图3为根据本申请的一些实施例提供的数据归一化方法中步骤S131的流程示意图;如图3所示,所述根据所述第一结果数组和所述要素标记数组,得到第二结果数组,包括:
步骤S131A、提取所述第一结果数组中的非空值元素,以及,所述非空值元素对应的所述要素标记数组中的所述要素标记;
在本申请实施例中,在提取所述第一结果数组中的非空值元素时,通过对所述第一结果数组进行遍历,得到所述第一结果数组中的非空值元素。比如,对第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]进行遍历,即可得到第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]的非空值元素‘M’、‘N’、‘P’、‘Q’。
再比如,对第一结果数组[‘A’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’]进行遍历,即可得到第一结果数组[‘A’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’]的非空值元素‘A’;对第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]进行遍历,即可得到第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]的非空值元素‘A’和非空值元素‘B’;对第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]进行遍历,即可得到第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]的非空值元素‘B’和非空值元素‘C’;对第一结果数组[’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]进行遍历,即可得到第一结果数组[’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]的非空值元素‘C’和非空值元素‘D’。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,在提取所述非空值元素对应的所述要素标记时,因为,第一结果数组中的非空值元素与要素标记数组中的要素标记具有一一对应的关系,所以,在提取了第一结果数组的非空值元素后,即可对应提取所述要素标记数组中,非空值元素对应的要素标记。比如,提取得到第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]的非空值元素‘M’、‘N’、‘P’、‘Q’后,即可在要素标记数组中提取第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]中非空值元素‘M’对应的要素标记‘F1’,非空值元素‘N’对应的要素标记‘F3’,非空值元素‘P’对应的要素标记‘F6’,非空值元素‘Q’对应的要素标记‘F9’。
再比如,提取得到第一结果数组[‘A’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’]的非空值元素‘A’后,即可在要素标记数组中提取第一结果数组[‘A’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’]中非空值元素‘A’对应的要素标记‘F1’。提取得到第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]的非空值元素‘A’和非空值元素‘B’后,即可在要素标记数组中提取第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]中非空值元素‘A’对应的要素标记‘F1’,在要素标记数组中提取第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]中非空值元素‘B’对应的要素标记‘F4’。提取得到第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]的非空值元素‘B’和非空值元素‘C’后,即可在要素标记数组中提取第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]中非空值元素‘B’对应的要素标记‘F4’,在要素标记数组中提取第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]中非空值元素‘C’对应的要素标记‘F7’。提取得到第一结果数组[’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]的非空值元素‘C’和非空值元素‘D’后,即可在要素标记数组中提取第一结果数组[’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]中非空值元素‘C’对应的要素标记‘F7’,在要素标记数组中提取第一结果数组[’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]中非空值元素‘D’对应的要素标记‘F8’。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
步骤S131B、对所述非空值元素和所述非空值元素对应的所述要素标记进行拼接,构成所述第二结果数组的多个元素,以得到所述第二结果数组。
在本申请实施例中,在对所述非空值元素和所述非空值元素对应的所述要素标记进行拼接,构成所述第二结果数组的元素时,通过将所述非空值元素和所述非空值元素对应的所述要素标记拼接成字符串或者元组(tuple),拼接成的字符串或者tuple即为所述第二结果数组的元素。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,在对所述非空值元素和所述非空值元素对应的所述要素标记进行拼接,构成所述第二结果数组的多个元素时,第一结果数组中的一个非空值元素和该非空值元素对应的要素标记拼接的字符串或者tuple为第二结果数组的一个元素。比如,第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]中的非空值元素’M’和其对应的要素标记数组中的要素标记‘F1’拼接得到字符串‘F1:M’;同理,得到字符串‘F3:N’、‘F6:P’、‘F9:Q’。
再比如,第一结果数组[‘A’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’]的非空值元素‘A’和其对应的要素标记数组中的要素标记‘F1’拼接得到字符串‘F1:A’,字符串‘F1:A’即为第二结果数组的一个元素。
第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]中的非空值元素‘A’和其对应的要素标记数组中的要素标记‘F1’拼接得到字符串‘F1:A’,字符串‘F1:A’即为第二结果数组的一个元素;第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]中的非空值元素‘B’和其对应的要素标记数组中的要素标记‘F4’拼接得到字符串‘F4:B’,字符串‘F4:B’即为第二结果数组的另一个元素。
第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]中的非空值元素‘B’和其对应的要素标记数组中的要素标记‘F4’拼接得到字符串‘F4:B’,字符串‘F4:B’即为第二结果数组的一个元素;第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]中的非空值元素‘C’和其对应的要素标记数组中的要素标记‘F7’拼接得到字符串‘F7:C’,字符串‘F7:C’即为第二结果数组的另一个元素。
第一结果数组[‘’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]中的非空值元素‘C’和其对应的要素标记数组中的要素标记‘F7’拼接得到字符串‘F7:C’,字符串‘F7:C’即为第二结果数组的一个元素;第一结果数组[‘’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]中的非空值元素‘D’和其对应的要素标记数组中的要素标记‘F8’拼接得到字符串‘F8:D’,字符串‘F8:D’即为第二结果数组的另一个元素。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,第一结果数组中的全部非空值元素和非空值元素对应的要素标记分别进行拼接,即可得到第二结果数组的全部元素。比如,由第一结果数组[‘M’,‘’,‘N’,‘’,‘’,‘P’,‘’,‘’,‘Q’,‘’]和要素标记数组[‘F1’,‘F2’,‘F3’,‘F4’,‘F5’,‘F6’,‘F7’,‘F8’,‘F9’,‘F10’],得到的第二结果数组为[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]。
再比如,由第一结果数组[‘A’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’,‘’]和要素标记数组[‘F1’,‘F2’,‘F3’,‘F4’,‘F5’,‘F6’,‘F7’,‘F8’,‘F9’,‘F10’],得到的第二结果数组为[F1:A];由第一结果数组[‘A’,‘’,‘’,‘B’,‘’,‘’,‘’,‘’,‘’,‘’]和要素标记数组[‘F1’,‘F2’,‘F3’,‘F4’,‘F5’,‘F6’,‘F7’,‘F8’,‘F9’,‘F10’],得到的第二结果数组为[‘F1:A’,‘F4:B’];由第一结果数组[‘’,‘’,‘’,‘B’,‘’,‘’,‘C’,‘’,‘’,‘’]和要素标记数组[‘F1’,‘F2’,‘F3’,‘F4’,‘F5’,‘F6’,‘F7’,‘F8’,‘F9’,‘F10’],得到的第二结果数组为[‘F4:B’,‘F7:C’];由第一结果数组[‘’,‘’,‘’,‘’,‘’,‘’,‘C’,‘D’,‘’,‘’]和要素标记数组[‘F1’,‘F2’,‘F3’,‘F4’,‘F5’,‘F6’,‘F7’,‘F8’,‘F9’,‘F10’],得到的第二结果数组为[‘F7:C’,‘F8:D’]。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,步骤S131A、步骤S131B是基于MapReduce计算架构对数据进行分布式计算。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
步骤S141、对所述第二结果数组进行遍历,提取所述第二结果数组中的每个元素,将所述第二结果数组中的每个元素与所述第二结果数组组成一个第一初始键值对;
在本申请实施例中,遍历第二结果数组,以第二结果数组中的每一个元素为键,以第二结果数组为值,生成一个第一初始键值对,因而,第一初始键值对的数量与第二结果数组中元素的数量一致。比如,对第二结果数组[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]进行遍历,以第二结果数组中的元素‘F1:M’为键,以第二结果数组[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]为值,生成的键值对(F1:M,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’])即为一个第一初始键值对;同理,可以得到第一初始键值对(F3:N,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’])、(F6:P,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’])、(F9:Q,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]);可见,由第二结果数组[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]生成的第一初始键值对的数量与第二结果数组[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]中的元素数量一致。
再比如,对第二结果数组[F1:A]进行遍历,以第二结果数组中的元素’F1:A’为键,以第二结果数组[F1:A]为值,生成的键值对为(F1:A,[F1:A]);可见,由第二结果数组[F1:A]生成的第一初始键值对的数量与第二结果数组[F1:A]中的元素数量一致。
对第二结果数组[‘F1:A’,‘F4:B’]进行遍历,以第二结果数组中的元素‘F1:A’为键,以第二结果数组[‘F1:A’,‘F4:B’]为值,生成的键值对(F1:A,[F1:A,F4:B])即为一个第一初始键值对;以第二结果数组中的元素‘F4:B’为键,以第二结果数组[‘F1:A’,‘F4:B’]为值,生成的键值对(F4:B,[F1:A,F4:B])即为另一个第一初始键值对;可见,由第二结果数组[‘F1:A’,‘F4:B’]生成的第一初始键值对的数量与第二结果数组[‘F1:A’,‘F4:B’]中的元素数量一致。
对第二结果数组[‘F4:B’,‘F7:C’]进行遍历,以第二结果数组中的元素‘F4:B’为键,以第二结果数组[‘F4:B’,‘F7:C’]为值,生成的键值对(F4:B,[‘F4:B’,‘F7:C’])即为一个第一初始键值对;以第二结果数组中的元素‘F7:C’为键,以第二结果数组[‘F4:B’,‘F7:C’]为值,生成的键值对(F7:C,[‘F4:B’,‘F7:C’])即为另一个第一初始键值对;可见,由第二结果数组[‘F4:B’,‘F7:C’]生成的第一初始键值对的数量与第二结果数组[‘F4:B’,‘F7:C’]中的元素数量一致。
对第二结果数组[‘F7:C’,‘F8:D’]进行遍历,以第二结果数组中的元素‘F7:C’为键,以第二结果数组[‘F7:C’,‘F8:D’]为值,生成的键值对(F7:C,[F7:C,F8:D])即为一个第一初始键值对;以第二结果数组中的元素‘F8:D’为键,以第二结果数组[‘F7:C’,‘F8:D’]为值,生成的键值对(F8:D,[F7:C,F8:D])即为另一个第一初始键值对;可见,由第二结果数组[‘F7:C’,‘F8:D’]生成的第一初始键值对的数量与第二结果数组[‘F7:C’,‘F8:D’]中的元素数量一致。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,根据第一初始键值对的数量和第二结果数组中元素的数量,对计算过程进行校验。如果第一初始键值对的数量和第二结果数组中元素的数量保持一致,则说明计算过程正确;如果第一初始键值对的数量和第二结果数组中元素的数量不一致,则说明在对第二结果数组遍历时和/或生产第一初始键值对时,丢失了数据,计算过程发生错误,需重新进行计算。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
步骤S151、对多个所述第一初始键值对进行转化,得到多个键不相同的第一键值对,其中,多个所述第一键值对构成所述初始数据。
在一些可选实施例中,在对多个所述第一初始键值对进行转化,得到多个键不相同的所述第一键值对时,对多个所述第一初始键值对中键相同的所述第一初始键值对进行并集处理,并对并集处理的结果进行去重处理,得到多个键不相同的所述第一键值对。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,在对多个所述第一初始键值对中键相同的所述第一初始键值对进行并集处理时,通过对多个所述第一初始键值对中键相同的所述第一初始键值对的值进行并集处理。比如,对第一初始键值对(F1:M,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’])、(F3:N,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’])、(F6:P,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’])、(F9:Q,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’])进行并集处理后的结果进行去重处理,得到第一键值对(F1:M,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’])、(F3:N,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’])、(F6:P,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’])、(F9:Q,[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]),构成初始数据。
再比如,对由第二结果数组[F1:A]得到的第一初始键值对(F1:A,[F1:A])、由第二结果数组[‘F1:A’,‘F4:B’]得到的第一初始键值对(F1:A,[F1:A,F4:B])、(F4:B,[F1:A,F4:B])、由第二结果数组[‘F4:B’,‘F7:C’]得到的第一初始键值对(F4:B,[F4:B,F7:C])、(F7:C,[F4:B,F7:C])、由第二结果数组[‘F7:C’,‘F8:D’]得到的第一初始键值对(F7:C,[F7:C,F8:D])、(F8:D,[F7:C,F8:D])中键相同的值进行并集处理时,由第二结果数组[F1:A]得到的第一初始键值对(F1:A,[F1:A])和第二结果数组[‘F1:A’,‘F4:B’]得到的第一初始键值对(F1:A,[F1:A,F4:B])的键相同,对第一初始键值对(F1:A,[F1:A])、(F1:A,[F1:A,F4:B])进行并集处理的结果为(F1:A,[F1:A,F1:A,F4:B]);
由第二结果数组[‘F1:A’,‘F4:B’]得到的第一初始键值对(F4:B,[F1:A,F4:B])和第二结果数组[‘F4:B’,‘F7:C’]得到的第一初始键值对(F4:B,[F4:B,F7:C])的键相同,对第一初始键值对(F4:B,[F1:A,F4:B])、(F4:B,[F4:B,F7:C])进行并集处理的结果为(F4:B,[F1:A,F4:B,F4:B,F7:C]);
由第二结果数组[‘F4:B’,‘F7:C’]得到的第一初始键值对(F7:C,[F4:B,F7:C])和第二结果数组[‘F7:C’,‘F8:D’]得到的第一初始键值对(F7:C,[F7:C,F8:D])的键相同,对第一初始键值对(F7:C,[F4:B,F7:C])、(F7:C,[F7:C,F8:D])进行并集处理的结果为(F7:C,[F4:B,F7:C,F7:C,F8:D])。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,由于第一初始键值对并集处理的结果中可能具有重复元素,因而,需要对其进行元素去重处理。比如,第一初始键值对并集处理的结果(F1:A,[F1:A,F1:A,F4:B])进行去重处理的结果为(F1:A,[F1:A,F4:B]),也就是说,(F1:A,[F1:A,F4:B])即为初始数据的一个第一键值对;第一初始键值对并集处理的结果(F4:B,[F1:A,F4:B,F4:B,F7:C])进行去重处理的结果为(F4:B,[F1:A,F4:B,F7:C]),也就是说,(F4:B,[F1:A,F4:B,F7:C])为初始数据的一个第一键值对;第一初始键值对并集处理的结果(F7:C,[F4:B,F7:C,F7:C,F8:D])进行去重处理的结果为(F7:C,[F4:B,F7:C,F8:D]),也就是说,(F7:C,[F4:B,F7:C,F8:D])为初始数据的一个第一键值对。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,步骤S111-步骤S151是基于MapReduce计算架构对数据进行分布式计算。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
步骤S102、基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,其中,所述待处理数据的归一化数据包含多个所述第二键值对。
在本申请实施例中,在基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对时,基于MapReduce计算架构,对所述初始数据进行Map过程计算和Reduce过程计算,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
图4为根据本申请的一些实施例提供的数据归一化方法中步骤S102的流程示意图;如图4所示,所述基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,包括:
步骤S112、提取所述初始数据中的多个所述第一键值对的值,生成中间结果数组;
在本申请实施例中,在提取所述初始数据中的多个所述第一键值对的值,生成中间结果数组时,抛弃所述初始数据中每个所述第一键值对的键,保留所述初始数据中每个所述第一键值对的值,由所述初始数据中每个所述第一键值对的值构成中间结果数组。比如,提取初始数据中第一键值对(F1:M,[F1:M,F3:N,F6:P,F9:Q])的值,生成的中间结果数组为[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’];提取初始数据中第一键值对(F3:N,[F1:M,F3:N,F6:P,F9:Q])的值,生成的中间结果数组为[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’];提取初始数据中第一键值对(F6:P,[F1:M,F3:N,F6:P,F9:Q])的值,生成的中间结果数组为[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’];提取初始数据中第一键值对(F9:Q,[F1:M,F3:N,F6:P,F9:Q])的值,生成的中间结果数组为[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]。
再比如,提取初始数据中第一键值对(F1:A,[F1:A,F4:B])的值,生成的中间结果数组为[F1:A,F4:B];提取初始数据中第一键值对(F4:B,[F1:A,F4:B,F7:C])的值,生成的中间结果数组为[F1:A,F4:B,F7:C];提取初始数据中第一键值对(F7:C,[F4:B,F7:C,F8:D])的值,生成的中间结果数组为[F4:B,F7:C,F8:D]。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
步骤S122、对所述中间结果数组进行遍历,提取所述中间结果数组中的每一个元素,将所述中间结果数组中的每个元素与所述中间结果数组组成一个第二初始键值对;
在本申请实施例中,遍历中间结果数组,以中间结果数组中的每一个元素为键,以中间结果数组为值,生成一个第二初始键值对,因而,第二初始键值对的数量与中间结果数组中元素的数量一致。比如,对中间结果数组[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]进行遍历,提取中间结果数组中的元素‘F1:M’、元素‘F3:N’、元素‘F6:P’和元素‘F9:Q’;以中间结果数组[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]中的元素‘F1:M’为键,以中间结果数组[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]为值,生成的键值对(F1:M,[F1:M,F3:N,F6:P,F9:Q])即为一个第二初始键值对,同理,生成第二初始键值对(F3:N,[F1:M,F3:N,F6:P,F9:Q])、(F6:P,[F1:M,F3:N,F6:P,F9:Q])、(F9:Q,[F1:M,F3:N,F6:P,F9:Q]);可见,由中间结果数组[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]生成的第二初始键值对(F1:M,[F1:M,F3:N,F6:P,F9:Q])、(F3:N,[F1:M,F3:N,F6:P,F9:Q])、(F6:P,[F1:M,F3:N,F6:P,F9:Q])、(F9:Q,[F1:M,F3:N,F6:P,F9:Q])的数量与中间结果数组[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]中的元素数量一致。
再比如,对中间结果数组[‘F1:A’,‘F4:B’]进行遍历,提取中间结果数组[‘F1:A’,‘F4:B’]中的元素‘F1:A’和元素‘F4:B’;以中间结果数组[‘F1:A’,‘F4:B’]中的元素‘F1:A’为键,以中间结果数组[‘F1:A’,‘F4:B’]为值,生成的键值对(F1:A,[F1:A,F4:B])即为一个第二初始键值对;以中间结果数组[‘F1:A’,‘F4:B’]中的元素‘F4:B’为键,以中间结果数组[‘F1:A’,‘F4:B’]为值,生成的键值对(F4:B,[F1:A,F4:B])即为另一个第二初始键值对;可见,由中间结果数组[‘F1:A’,‘F4:B’]生成的第二初始键值对(F1:A,[F1:A,F4:B])、(F4:B,[F1:A,F4:B])的数量与中间结果数组[‘F1:A’,‘F4:B’]中的元素数量一致。
对中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]进行遍历,提取中间结果数组中的元素‘F1:A’、元素‘F4:B’和元素‘F7:C’;以中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]中的元素‘F1:A’为键,以中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]为值,生成的键值对(F1:A,[F1:A,F4:B,F7:C])即为一个第二初始键值对;以中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]中的元素‘F4:B’为键,以中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]为值,生成的键值对(F4:B,[F1:A,F4:B,F7:C])即为另一个第二初始键值对;以中间结果数组中的元素‘F7:C’为键,以中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]为值,生成的键值对(F7:C,[F1:A,F4:B,F7:C])即为另一个第二初始键值对;可见,由中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]生成的第二初始键值对(F1:A,[F1:A,F4:B,F7:C])、(F4:B,[F1:A,F4:B,F7:C])、(F7:C,[F1:A,F4:B,F7:C])的数量与中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]中的元素数量一致。
对中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]进行遍历,提取中间结果数组中的元素‘F4:B’、元素‘F7:C’和元素‘F8:D’;以中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]中的元素‘F4:B’为键,以中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]为值,生成的键值对(F4:B,[F4:B,F7:C,F8:D])即为一个第二初始键值对;以中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]中的元素‘F7:C’为键,以中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]为值,生成的键值对(F7:C,[F4:B,F7:C,F8:D])即为另一个第二初始键值对;以中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]中的元素‘F8:D’为键,以中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]为值,生成的键值对(F8:D,[F4:B,F7:C,F8:D])即为另一个第二初始键值对;可见,由中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]生成的第二初始键值对(F4:B,[F4:B,F7:C,F8:D])、(F7:C,[F4:B,F7:C,F8:D])、(F8:D,[F4:B,F7:C,F8:D])的数量与中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]中的元素数量一致。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
步骤S132、对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据。
在本申请实施例中,在对多个所述第二初始键值对中键相同的所述第二初始键值对进行并集处理时,通过对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理。比如,对中间结果数组[‘F1:M’,‘F3:N’,‘F6:P’,‘F9:Q’]得到的第二初始键值对(F1:M,[F1:M,F3:N,F6:P,F9:Q])、(F3:N,[F1:M,F3:N,F6:P,F9:Q])、(F6:P,[F1:M,F3:N,F6:P,F9:Q])、(F9:Q,[F1:M,F3:N,F6:P,F9:Q])进行并集处理,并对并集处理后的结果进行去重处理,得到第二键值对(F1:M,[F1:M,F3:N,F6:P,F9:Q])、(F3:N,[F1:M,F3:N,F6:P,F9:Q])、(F6:P,[F1:M,F3:N,F6:P,F9:Q])、(F9:Q,[F1:M,F3:N,F6:P,F9:Q]),第二键值对(F1:M,[F1:M,F3:N,F6:P,F9:Q])、(F3:N,[F1:M,F3:N,F6:P,F9:Q])、(F6:P,[F1:M,F3:N,F6:P,F9:Q])、(F9:Q,[F1:M,F3:N,F6:P,F9:Q])构成待处理数据的归一化数据。
再比如,对由中间结果数组[‘F1:A’,‘F4:B’]得到的第二初始键值对(F1:A,[F1:A,F4:B])和中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]得到的第二初始键值对(F1:A,[F1:A,F4:B,F7:C])的键相同,对第二初始键值对(F1:A,[F1:A,F4:B])、(F1:A,[F1:A,F4:B,F7:C])的值进行并集的结果为(F1:A,[F1:A,F4:B,F1:A,F4:B,F7:C])。
由中间结果数组[‘F1:A’,‘F4:B’]得到的第二初始键值对(F4:B,[F1:A,F4:B])、中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]得到的第二初始键值对(F4:B,[F1:A,F4:B,F7:C])和中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]得到的第二初始键值对(F4:B,[F4:B,F7:C,F8:D])的键相同,对第二初始键值对(F4:B,[F1:A,F4:B])、(F4:B,[F1:A,F4:B,F7:C])、(F4:B,[F4:B,F7:C,F8:D])进行并集处理的结果为(F4:B,[F1:A,F4:B,F1:A,F4:B,F7:C,F4:B,F7:C,F8:D]);
由中间结果数组[‘F1:A’,‘F4:B’,‘F7:C’]得到的第二初始键值对(F7:C,[F1:A,F4:B,F7:C])和中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]得到的第二初始键值对(F7:C,[F4:B,F7:C,F8:D])的键相同,对第二初始键值对(F7:C,[F1:A,F4:B,F7:C])、(F7:C,[F4:B,F7:C,F8:D])进行并集处理的结果为(F7:C,[F1:A,F4:B,F7:C,F4:B,F7:C,F8:D])。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,由于第二初始键值对并集处理的结果中可能具有重复元素,因而,需要对其进行元素去重处理。比如,第二初始键值对并集处理的结果(F1:A,[F1:A,F4:B,F1:A,F4:B,F7:C])进行去重处理,生成第二键值对(F1:A,[F1:A,F4:B,F7:C]);第二初始键值对并集处理的结果(F4:B,[F1:A,F4:B,F1:A,F4:B,F7:C,F4:B,F7:C,F8:D])进行去重处理,生成第二键值对(F4:B,[F1:A,F4:B,F7:C,F8:D]);第二初始键值对并集处理的结果(F7:C,[F1:A,F4:B,F7:C,F4:B,F7:C,F8:D])进行去重处理,生成第二键值对(F7:C,[F1:A,F4:B,F7:C,F8:D])。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,由于不存在与中间结果数组[‘F4:B’,‘F7:C’,‘F8:D’]生成的第二初始键值对(F8:D,[F4:B,F7:C,F8:D])相同的键,因而,对第二初始键值对(F8:D,[F4:B,F7:C,F8:D])并集处理结果再进行去重处理,得到的第二键值对为(F8:D,[F4:B,F7:C,F8:D])。
也就是说,第二键值对(F1:A,[F1:A,F4:B,F7:C])、第二键值对(F4:B,[F1:A,F4:B,F7:C,F8:D])、第二键值对(F7:C,[F1:A,F4:B,F7:C,F8:D])和第二键值对(F8:D,[F4:B,F7:C,F8:D])构成所述待处理数据的归一化数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,基于MapReduce计算架构,对仅包含有一条记录数据的分布式存储的待处理数据‘M||N|||P||Q|’,进行Map过程计算和Reduce过程计算,得到的归一化数据即为对‘M||N|||P||Q|’的完全归一化数据。而基于MapReduce计算架构,对分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’,进行Map过程计算和Reduce过程计算,得到归一化数据((F1:A,[F1:A,F4:B,F7:C])、(F4:B,[F1:A,F4:B,F7:C,F8:D])、(F7:C,[F1:A,F4:B,F7:C,F8:D])、(F8:D,[F4:B,F7:C,F8:D])),则仅为待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’中某一数据要素的归一化数据,而并未彻底完成对待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’全部数据要素的归一化。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
图5为根据本申请的一些实施例提供的数据归一化方法中步骤S132的流程示意图;如图5所示,所述对多个所述第二初始键值对中的键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个所述第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据,包括:
步骤S132A、根据所述待处理数据中的第i个数据要素,对所述第i个数据要素对应的多个所述第二初始键值对中相同的值进行并集处理,并对并集处理的结果进行去重处理,生成所述第i个数据要素的多个所述第二键值对,由所述第i个数据要素的多个所述第二键值对构成所述待处理数据的所述第i个数据要素的归一化数据,其中,i为正整数;
在本申请实施例中,分布式存储的待处理数据中往往包含有多个数据要素,一般按照数据要素对待处理数据进行归一化,生成待处理数据的各个数据要素的归一化数据。比如,对分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’按照某一个数据要素进行归一化后,得到的归一化数据((F1:A,[F1:A,F4:B,F7:C])、(F4:B,[F1:A,F4:B,F7:C,F8:D])、(F7:C,[F1:A,F4:B,F7:C,F8:D])、(F8:D,[F4:B,F7:C,F8:D]))为其中某一数据要素的归一化数据(此计算过程是基于MapReduce计算架构由计算机自动完成的,因而,具体的并不清楚其具体为那个数据要素),也就是说,分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’并未完全归一化,还需要对其它数据要素进行归一化。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
步骤S132B、基于MapReduce计算架构,对所述第i个数据要素的多个所述第二键值对进行转化,生成第i+1个数据要素的多个所述第二键值对,由所述第i+1个数据要素的多个所述第二键值对构成所述待处理数据的所述第i+1个数据要素的归一化数据。
在本申请实施例中,当需要对待处理数据按照多个数据要素进行归一化时,可先对待处理数据按照某一个数据要素进行归一化,得到某一个数据要素的归一化数据。后一数据要素进行归一化时,可将前一数据要素的归一化数据作为输入,基于MapReduce计算架构,对前一数据要素的归一化数据的第二键值对进行Map过程计算和Reduce过程计算,输出后一数据要素的多个第二键值对;由后一数据要素的多个第二键值对构成待处理数据的后一数据要素的归一化数据。
因而,当待处理数据有N(N为正整数,N大于i)个数据要素需要进行归一化时,只需对步骤S132B循环执行N-1次,即可得到待处理数据的N个数据要素的归一化数据。比如,基于MapReduce计算架构,将分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’的某一数据要素(定义为第i个数据要素)的归一化数据((F1:A,[F1:A,F4:B,F7:C])、(F4:B,[F1:A,F4:B,F7:C,F8:D])、(F7:C,[F1:A,F4:B,F7:C,F8:D])、(F8:D,[F4:B,F7:C,F8:D]))作为输入,进行Map过程计算和Reduce过程计算,输出结果的即为分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’的另一数据要素(定义为第i+1个数据要素)的归一化数据;然后再将第i+1个数据要素的归一化数据作为输入,进行Map过程计算和Reduce过程计算,输出结果的即为分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’的再一数据要素(定义为第i+2个数据要素)的归一化数据,循环执行上述步骤N-1次,即可得到分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’的全部数据要素的归一化数据,即对分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’完全彻底的归一化。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在一些可选实施例中,在基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据之后,还包括:基于MapReduce计算架构,对所述归一化数据进行处理,得到去重的所述归一化数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,在基于MapReduce计算架构,对所述归一化数据进行处理,得到去重的所述归一化数据时,基于MapReduce计算架构,对所述归一化数据进行Map过程计算和Reduce过程计算,得到去重的所述归一化数据。具体的,基于MapReduce计算架构,首先,根据所述归一化数据,得到多个第三初始键值对,其中,每个所述第三初始键值对的键为所述归一化数据中的一个所述第二键值对的值转化得到的元组,每个所述第三初始键值对的值为空值;然后,对多个所述第三初始键值对进行并集处理,并对并集处理的结果进行去重,生成多个第三键值对,由多个所述第三键值对构成去重的所述归一化数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,在根据所述归一化数据,得到多个第三初始键值对时,提取所述归一化数据中所述第二键值对的值,转化为元组作为第三初始键值对的键,将第三键值对的值用空值‘NULL’填充,生成第三键值对。比如,第二键值对(F1:A,[F1:A,F4:B,F7:C])转化为第三初始键值对((F1:A,F4:B,F7:C),NULL);第二键值对(F4:B,[F1:A,F4:B,F7:C,F8:D]),转化为第三初始键值对为((F1:A,F4:B,F7:C,F8:D),NULL);第二键值对(F7:C,[F1:A,F4:B,F7:C,F8:D])转化为第三初始键值对为((F1:A,F4:B,F7:C,F8:D),NULL);第二键值对(F8:D,[F4:B,F7:C,F8:D])转化为第三初始键值对为((F4:B,F7:C,F8:D),NULL)。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,在对多个所述第三初始键值对进行并集处理,并对并集处理的结果进行去重,生成多个第三键值对,由多个所述第三键值对构成去重的所述归一化数据时,可参考上述步骤S151中并集处理、元素去重的流程,在此不再一一赘述。比如,得到分布式存储的待处理数据‘A|||||||||’、‘A|||B||||||’、‘|||B|||C|||’和‘||||||C|D||’的去重的归一化数据为(((F1:A,F4:B,F7:C,F8:D),NULL)、((F2:E,F3:F,F5:G,F10:H),NULL))可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,对待处理数据进行归一化时,基于MapReduce计算架构,采用分布式计算对分布式存储的每一条数据进行计算,得到包含多个键不相同的第一键值对的初始数据;然后,再基于MapReduce计算架构,将初始数据中的第一键值对转化为多个第二键值对,完成对待处理数据的归一化,实现对分布式储存的海量级数据的归一化。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,基于MapReduce计算架构对数据进行分布式计算,可以对数据进行拆分后进行计算,对拆分计算结果合并后再次进行计算实现数据的归一化;或者对数据进行分块单独计算,对单独计算结果合并后再次进行计算实现数据的归一化。因而,基于MapReduce计算架构,对分布式存储的海量级待处理数据,进行Map过程计算和Reduce过程计算,对生成的单独计算结果进行合并,得到初始数据;然后,继续基于MapReduce计算架构,对初始数据进行Map过程计算和Reduce过程计算,即可实现对海量级数据的归一化。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在本申请实施例中,待处理数据可以为分布式存储的数据的集合,对待处理数据进行归一化时,基于MapReduce计算架构,采用分布式计算对分布式存储的每一条数据单独进行计算(Map过程计算和Reduce过程计算),然后合并单独计算结果,再基于MapReduce计算架构,对单独计算结果合并后进行Map过程计算和Reduce过程计算,完成对待处理数据的归一化。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
本申请实施例中,并不限制分布式文件系统的选择,也不限制使用何种工具软件来实现算法,也不能因此认为分布式文件系统的不同、实现算法的工具软件的不同是本申请实施例算法以外新的算法。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
示例性装置
图6为根据本申请的一些实施例提供的数据归一化装置的结构示意图;如图6所示,该数据归一化装置包括:初始数据单元201,配置为基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据;其中,所述待处理数据的格式为分布式文件系统支持的格式,所述初始数据包含多个键不相同的第一键值对;归一化数据单元202,配置为基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,其中,所述待处理数据的归一化数据包含多个所述第二键值对。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
图7为根据本申请的一些实施例提供的初始数据单元的结构示意图;如图7所示,该初始数据单元201包括:第一结果数组子单元211,配置为对分布式存储的所述待处理数据进行分割处理,得到第一结果数组;要素标记数组子单元221,配置为建立所述第一结果数组的要素标记数组,其中,所述要素标记数组中的要素标记与所述第一结果数组中的元素一一对应;第二结果数组子单元231,配置为根据所述第一结果数组和所述要素标记数组,得到第二结果数组,其中,所述第二结果数组中包含的每个元素由所述第一结果数组中的非空值元素、所述非空值元素对应的所述要素标记数组中的所述要素标记拼接得到;第一初始键值对子单元241,配置为对所述第二结果数组进行遍历,提取所述第二结果数组中的每个元素,将所述第二结果数组中的每个元素与所述第二结果数组组成一个所述第一处理键值对;第一键值对子单元251,配置为对多个所述第一初始键值对进行转化,得到多个键不相同的所述第一键值对,其中,多个所述第一键值对构成所述初始数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在一些可选实施例中,所述第一键值对子单元251,进一步配置为对多个所述第一键值对中键相同的所述第一初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,得到多个键不相同的所述第一键值对。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
图8为根据本申请的一些实施例提供的第二结果数组子单元的结构示意图;如图8所示,该第二结果数组子单元231包括:第一提取模块231A,配置为提取所述第一结果数组中的非空值元素,以及,所述要素标记数组中所述非空值元素对应的所述要素标记;拼接模块231B,配置为对所述非空值元素和所述非空值元素对应的所述要素标记进行拼接,构成所述第二结果数组的多个元素,以得到所述第二结果数组。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
图9为根据本申请的一些实施例提供的归一化数据单元的结构示意图;如图9所示,该归一化数据单元202包括:中间结果数组子单元212,配置为提取所述初始数据中的多个所述第一键值对的值,生成中间结果数组;第二初始键值对子单元222,配置为对所述中间结果数据进行遍历,提取所述中间结果数组中的每一个元素,将所述中间结果数组中的每个元素与所述中间结果数组组成一个所述第二初始键值对;第二键值对子单元232,配置为对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个所述第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
图10为根据本申请的一些实施例提供的第二键值对子单元的结构示意图;如图10所示,该第二键值对子单元包括:第一归一化模块232A,配置为根据所述待处理数据中的第i个数据要素,对所述第i个数据要素对应的多个所述第二初始键值对中相同的值进行并集处理,并对并集处理的结果进行去重处理,生成所述第i个数据要素的多个所述第二键值对,由所述第i个数据要素的多个所述第二键值对构成所述待处理数据的所述第i个数据要素的归一化数据,其中,i为正整数;第二归一化模块232B,配置为基于MapReduce计算架构,对所述第i个数据要素的多个所述第二键值对进行转化,生成第i+1个数据要素的多个所述第二键值对,由所述第i+1个数据要素的多个所述第二键值对构成所述待处理数据的所述第i+1个数据要素的归一化数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在一些可选实施例中,所述数据归一化装置还包括:第三初始键值对单元,配置为根据所述归一化数据,得到多个第三初始键值对,其中,每个所述第三初始键值对的键为所述归一化数据中的一个所述第二键值对的值转化得到的元组,每个所述第三初始键值对的值为空值;归一化数据去重单元,配置为对多个所述第三初始键值对进行并集处理,并对并集处理的结果进行去重,生成多个第三键值对,由多个所述第三键值对构成去重的所述归一化数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
本申请实施例提供的数据归一化装置能够实现上述数据归一化方法实施例中的各个过程,并达到相同的功能和效果,在此不再一一赘述。
示例性介质
本申请实施例还提供一种计算机可读介质,用于存储计算机程序,该计算机可读介质可以为可读存储介质,比如U盘、光盘、硬盘等;也可以为可读信号介质,比如光、点、磁、电磁等器件。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
在一些可选实施例中,该计算机可读介质存储的计算机程序在被处理器执行时,可以实现以下流程:基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据;其中,所述待处理数据的格式为分布式文件系统支持的格式,所述初始数据包含多个键不相同的第一键值对;基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,其中,所述待处理数据的归一化数据包含多个所述第二键值对。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质存储的计算机程序在被处理器执行时,所述基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据,包括:基于MapReduce计算架构,对分布式存储的所述待处理数据进行分割处理,得到第一结果数组;建立所述第一结果数组的要素标记数组,其中,所述要素标记数组中的要素标记与所述第一结果数组中的元素一一对应;根据所述第一结果数组和所述要素标记数组,得到第二结果数组,其中,所述第二结果数组中包含的每个元素由所述第一结果数组中的非空值元素、所述非空值元素对应的所述要素标记数组中的所述要素标记拼接得到;对所述第二结果数组进行遍历,提取所述第二结果数组中的每个元素,将所述第二结果数组中的每个元素与所述第二结果数组组成一个所述第一初始键值对;对多个所述第一初始键值对进行转化,得到多个键不相同的所述第一键值对,其中,多个所述第一键值对构成所述初始数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质存储的计算机程序在被处理器执行时,所述根据所述第一结果数组和所述要素标记数组,得到第二结果数组,包括:提取所述第一结果数组中的非空值元素,以及,所述非空值元素对应的所述要素标记数组中的所述要素标记;对所述非空值元素和所述非空值元素对应的所述要素标记进行拼接,构成所述第二结果数组的多个元素,以得到所述第二结果数组。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质存储的计算机程序在被处理器执行时,所述对多个所述第一初始键值对进行转化,得到多个键不相同的所述第一键值对,包括:对多个所述第一初始键值对中键相同的所述第一初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,得到多个键不相同的所述第一键值对。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质存储的计算机程序在被处理器执行时,所述基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,包括:基于MapReduce计算架构,提取所述初始数据中的多个所述第一键值对的值,生成中间结果数组;对所述中间结果数组进行遍历,提取所述中间结果数组中的每一个元素,将所述中间结果数组中的每个元素与所述中间结果数组组成一个所述第二初始键值对;对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个所述第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质存储的计算机程序在被处理器执行时,所述对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个所述第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据,包括:根据所述待处理数据中的第i个数据要素,对所述第i个数据要素对应的多个所述第二初始键值对中相同的值进行并集处理,并对并集处理的结果进行去重处理,生成所述第i个数据要素的多个所述第二键值对,由所述第i个数据要素的多个所述第二键值对构成所述待处理数据的所述第i个数据要素的归一化数据,其中,i为正整数;基于MapReduce计算架构,对所述第i个数据要素的多个所述第二键值对进行转化,生成第i+1个数据要素的多个所述第二键值对,由所述第i+1个数据要素的多个所述第二键值对构成所述待处理数据的所述第i+1个数据要素的归一化数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质存储的计算机程序在被处理器执行时,所述基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据之后,还包括:基于MapReduce计算架构,根据所述归一化数据,得到多个第三初始键值对,其中,每个所述第三初始键值对的键为所述归一化数据中的一个所述第二键值对的值转化得到的元组,每个所述第三初始键值对的值为空值;对多个所述第三初始键值对进行并集处理,并对并集处理的结果进行去重,生成多个第三键值对,由多个所述第三键值对构成去重的所述归一化数据。
本申请实施例提供的计算机可读介质能够实现上述数据归一化方法实施例中的各个过程,并达到相同的功能和效果,在此不再一一赘述。
示例性设备
图11为根据本申请的一些实施例提供的电子设备的结构示意图;如图11所示,该电子设备包括:
一个或多个处理器301;
计算机可读介质302,可以配置为存储一个或多个程序,
所述一个或多个处理器301执行一个或多个程序时,实现如下步骤:基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据;其中,所述待处理数据的格式为分布式文件系统支持的格式,所述初始数据包含多个键不相同的第一键值对;基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,其中,所述待处理数据的归一化数据包含多个所述第二键值对。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质302存储的计算机程序在被处理器301执行时,所述基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据的步骤,包括:基于MapReduce计算架构,对分布式存储的所述待处理数据进行分割处理,得到第一结果数组;建立所述第一结果数组的要素标记数组,其中,所述要素标记数组中的要素标记与所述第一结果数组中的元素一一对应;根据所述第一结果数组和所述要素标记数组,得到第二结果数组,其中,所述第二结果数组中包含的每个元素由所述第一结果数组中的非空值元素、所述非空值元素对应的所述要素标记数组中的所述要素标记拼接得到;对所述第二结果数组进行遍历,提取所述第二结果数组中的每个元素,将所述第二结果数组中的每个元素与所述第二结果数组组成一个所述第一初始键值对;对多个所述第一初始键值对进行转化,得到多个键不相同的所述第一键值对,其中,多个所述第一键值对构成所述初始数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质302存储的计算机程序在被处理器301执行时,所述根据所述第一结果数组和所述要素标记数组,得到第二结果数组的步骤,包括:提取所述第一结果数组中的非空值元素,以及,所述非空值元素对应的所述要素标记数组中的所述要素标记;对所述非空值元素和所述非空值元素对应的所述要素标记进行拼接,构成所述第二结果数组的多个元素,以得到所述第二结果数组。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质302存储的计算机程序在被处理器301执行时,所述对多个所述第一初始键值对进行转化,得到多个键不相同的所述第一键值对的步骤,包括:对多个所述第一初始键值对中键相同的所述第一初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,得到多个键不相同的所述第一键值对。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质302存储的计算机程序在被处理器301执行时,所述基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据的步骤,包括:基于MapReduce计算架构,提取所述初始数据中的多个所述第一键值对的值,生成中间结果数组;对所述中间结果数组进行遍历,提取所述中间结果数组中的每一个元素,将所述中间结果数组中的每个元素与所述中间结果数组组成一个所述第二初始键值对;对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个所述第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质302存储的计算机程序在被处理器301执行时,所述对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个所述第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据的步骤,包括:根据所述待处理数据中的第i个数据要素,对所述第i个数据要素对应的多个所述第二初始键值对中相同的值进行并集处理,并对并集处理的结果进行去重处理,生成所述第i个数据要素的多个所述第二键值对,由所述第i个数据要素的多个所述第二键值对构成所述待处理数据的所述第i个数据要素的归一化数据,其中,i为正整数;基于MapReduce计算架构,对所述第i个数据要素的多个所述第二键值对进行转化,生成第i+1个数据要素的多个所述第二键值对,由所述第i+1个数据要素的多个所述第二键值对构成所述待处理数据的所述第i+1个数据要素的归一化数据。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
可选地,该计算机可读介质302存储的计算机程序在被处理器301执行时,所述基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据的步骤之后,还包括:基于MapReduce计算架构,根据所述归一化数据,得到多个第三初始键值对,其中,每个所述第三初始键值对的键为所述归一化数据中的一个所述第二键值对的值转化得到的元组,每个所述第三初始键值对的值为空值;对多个所述第三初始键值对进行并集处理,并对并集处理的结果进行去重,生成多个第三键值对,由多个所述第三键值对构成去重的所述归一化数据。
图12为根据本申请的一些实施例提供的电子设备的硬件结构;如图12所示,该电子设备用于对分布式存储的海量级数据进行归一化,该电子设备的硬件结构可以包括:处理器401、通信接口402、计算机可读介质403和通信总线404;
其中,处理器401、通信接口402、计算机可读介质403通过通信总线404完成相互间的通信;
可选地,通信接口402可以为通信模块的接口,如GSM模块的接口;
其中,处理器401具体可以配置为:基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据;其中,所述待处理数据的格式为分布式文件系统支持的格式,所述初始数据包含多个键不相同的第一键值对;基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,其中,所述待处理数据的归一化数据包含多个所述第二键值对。可以理解的是,以上描述仅为示例性的,本申请实施例对此并不进行限定。
处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等,还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要监测对象。这类终端包括:智能手机(例如:IPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如Ipad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如:iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可以将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CDROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器存储介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的数据归一化方法。此外,当通用计算机访问用于实现在此示出的方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和涉及约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述得设备及系统实施例仅仅是示意性的,其中作为分离不见说明的单元可以使或者也可以不是物理上分开的,作为单元提示的不见可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上实施方式仅用于说明本申请实施例,而非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专业保护范围应由权利要求限定。

Claims (7)

1.一种数据归一化方法,其特征在于,包括:
基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据;其中,所述待处理数据的格式为分布式文件系统支持的格式,所述初始数据包含多个键不相同的第一键值对;
基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,其中,所述待处理数据的归一化数据包含多个所述第二键值对;
所述基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据,包括:基于MapReduce计算架构,
对分布式存储的所述待处理数据进行分割处理,得到第一结果数组;
建立所述第一结果数组的要素标记数组,其中,所述要素标记数组中的要素标记与所述第一结果数组中的元素一一对应;
根据所述第一结果数组和所述要素标记数组,得到第二结果数组,其中,所述第二结果数组中包含的每个元素由所述第一结果数组中的非空值元素、所述非空值元素对应的所述要素标记数组中的所述要素标记拼接得到;
对所述第二结果数组进行遍历,提取所述第二结果数组中的每个元素,将所述第二结果数组中的每个元素与所述第二结果数组组成一个第一初始键值对;
对多个所述第一初始键值对进行转化,得到多个键不相同的第一键值对,其中,多个所述第一键值对构成所述初始数据;
所述基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,包括:基于MapReduce计算架构,
提取所述初始数据中的多个所述第一键值对的值,生成中间结果数组;
对所述中间结果数组进行遍历,提取所述中间结果数组中的每一个元素,将所述中间结果数组中的每个元素与所述中间结果数组组成一个第二初始键值对;
对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据;
所述对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个所述第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据,包括:
根据所述待处理数据中的第i个数据要素,对所述第i个数据要素对应的多个所述第二初始键值对中相同的值进行并集处理,并对并集处理的结果进行去重处理,生成所述第i个数据要素的多个所述第二键值对,由所述第i个数据要素的多个所述第二键值对构成所述待处理数据的所述第i个数据要素的归一化数据,其中,i为正整数;
基于MapReduce计算架构,对所述第i个数据要素的多个所述第二键值对进行转化,生成第i+1个数据要素的多个所述第二键值对,由所述第i+1个数据要素的多个所述第二键值对构成所述待处理数据的所述第i+1个数据要素的归一化数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一结果数组和所述要素标记数组,得到第二结果数组,包括:
提取所述第一结果数组中的非空值元素,以及,所述非空值元素对应的所述要素标记数组中的所述要素标记;
对所述非空值元素和所述非空值元素对应的所述要素标记进行拼接,构成所述第二结果数组的多个元素,以得到所述第二结果数组。
3.根据权利要求1所述的方法,其特征在于,所述对多个所述第一初始键值对进行转化,得到多个键不相同的第一键值对,包括:对多个所述第一初始键值对中键相同的所述第一初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,得到多个键不相同的所述第一键值对。
4.根据权利要求1-3任一所述的方法,其特征在于,所述基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据之后,还包括:基于MapReduce计算架构,
根据所述归一化数据,得到多个第三初始键值对,其中,每个所述第三初始键值对的键为所述归一化数据中的一个所述第二键值对的值转化得到的元组,每个所述第三初始键值对的值为空值;
对多个所述第三初始键值对进行并集处理,并对并集处理的结果进行去重,生成多个第三键值对,由多个所述第三键值对构成去重的所述归一化数据。
5.一种数据归一化装置,其特征在于,包括:
初始数据单元,配置为基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据;其中,所述待处理数据的格式为分布式文件系统支持的格式,所述初始数据包含多个键不相同的第一键值对;
归一化数据单元,配置为基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,其中,所述待处理数据的归一化数据包含多个所述第二键值对;
所述基于MapReduce计算架构,对分布式存储的待处理数据进行处理,得到初始数据,包括:基于MapReduce计算架构,
对分布式存储的所述待处理数据进行分割处理,得到第一结果数组;
建立所述第一结果数组的要素标记数组,其中,所述要素标记数组中的要素标记与所述第一结果数组中的元素一一对应;
根据所述第一结果数组和所述要素标记数组,得到第二结果数组,其中,所述第二结果数组中包含的每个元素由所述第一结果数组中的非空值元素、所述非空值元素对应的所述要素标记数组中的所述要素标记拼接得到;
对所述第二结果数组进行遍历,提取所述第二结果数组中的每个元素,将所述第二结果数组中的每个元素与所述第二结果数组组成一个第一初始键值对;
对多个所述第一初始键值对进行转化,得到多个键不相同的第一键值对,其中,多个所述第一键值对构成所述初始数据;
所述基于MapReduce计算架构,将所述初始数据中的多个所述第一键值对分别转化为多个第二键值对,得到所述待处理数据的归一化数据,包括:基于MapReduce计算架构,
提取所述初始数据中的多个所述第一键值对的值,生成中间结果数组;
对所述中间结果数组进行遍历,提取所述中间结果数组中的每一个元素,将所述中间结果数组中的每个元素与所述中间结果数组组成一个第二初始键值对;
对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据;
所述对多个所述第二初始键值对中键相同的所述第二初始键值对的值进行并集处理,并对并集处理的结果进行去重处理,生成多个所述第二键值对,由多个所述第二键值对构成所述待处理数据的归一化数据,包括:
根据所述待处理数据中的第i个数据要素,对所述第i个数据要素对应的多个所述第二初始键值对中相同的值进行并集处理,并对并集处理的结果进行去重处理,生成所述第i个数据要素的多个所述第二键值对,由所述第i个数据要素的多个所述第二键值对构成所述待处理数据的所述第i个数据要素的归一化数据,其中,i为正整数;
基于MapReduce计算架构,对所述第i个数据要素的多个所述第二键值对进行转化,生成第i+1个数据要素的多个所述第二键值对,由所述第i+1个数据要素的多个所述第二键值对构成所述待处理数据的所述第i+1个数据要素的归一化数据。
6.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序为如权利要求1-4任一所述的数据归一化方法。
7.一种电子设备,其特征在于,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时如权利要求1-4任一所述的数据归一化方法。
CN202010821129.4A 2020-08-14 2020-08-14 数据归一化方法、装置、计算机可读介质和电子设备 Active CN112115099B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010821129.4A CN112115099B (zh) 2020-08-14 2020-08-14 数据归一化方法、装置、计算机可读介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010821129.4A CN112115099B (zh) 2020-08-14 2020-08-14 数据归一化方法、装置、计算机可读介质和电子设备

Publications (2)

Publication Number Publication Date
CN112115099A CN112115099A (zh) 2020-12-22
CN112115099B true CN112115099B (zh) 2023-11-07

Family

ID=73804706

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010821129.4A Active CN112115099B (zh) 2020-08-14 2020-08-14 数据归一化方法、装置、计算机可读介质和电子设备

Country Status (1)

Country Link
CN (1) CN112115099B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103714009A (zh) * 2013-12-20 2014-04-09 华中科技大学 一种GPU上基于内存统一管理的MapReduce实现方法
CN104834557A (zh) * 2015-05-18 2015-08-12 成都博元科技有限公司 一种基于Hadoop的数据分析方法
CN107832406A (zh) * 2017-11-03 2018-03-23 北京锐安科技有限公司 海量日志数据的去重入库方法、装置、设备及存储介质
CN109325034A (zh) * 2018-10-12 2019-02-12 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN2013MU02918A (zh) * 2013-09-10 2015-07-03 Tata Consultancy Services Ltd
US10990288B2 (en) * 2014-08-01 2021-04-27 Software Ag Usa, Inc. Systems and/or methods for leveraging in-memory storage in connection with the shuffle phase of MapReduce

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103714009A (zh) * 2013-12-20 2014-04-09 华中科技大学 一种GPU上基于内存统一管理的MapReduce实现方法
CN104834557A (zh) * 2015-05-18 2015-08-12 成都博元科技有限公司 一种基于Hadoop的数据分析方法
CN107832406A (zh) * 2017-11-03 2018-03-23 北京锐安科技有限公司 海量日志数据的去重入库方法、装置、设备及存储介质
CN109325034A (zh) * 2018-10-12 2019-02-12 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
煤矿综采设备运行状态大数据清洗建模;马宏伟等;工矿自动化;第44卷(第11期);第80-83页 *

Also Published As

Publication number Publication date
CN112115099A (zh) 2020-12-22

Similar Documents

Publication Publication Date Title
US10747737B2 (en) Altering data type of a column in a database
CN105718502B (zh) 用于高效特征匹配的方法和设备
CN108733317B (zh) 数据存储方法和装置
CN108334609B (zh) Oracle中实现JSON格式数据存取的方法、装置、设备及存储介质
US11514003B2 (en) Data compression based on key-value store
CN107766492B (zh) 一种图像搜索的方法和装置
US11947595B2 (en) Storing semi-structured data
US20200097583A1 (en) Translation of tenant identifiers
WO2021174836A1 (zh) 差分包生成方法方法、装置、计算机设备及存储介质
US20240241892A1 (en) Data storage method and data storage apparatus for string data
CN114185873A (zh) 数据迁移方法、装置、服务器及存储介质
CN112307061A (zh) 用于查询数据的方法和装置
CN110134768A (zh) 文本的处理方法、装置、设备及存储介质
CN112115099B (zh) 数据归一化方法、装置、计算机可读介质和电子设备
CN112597190A (zh) 点近邻轨迹查询方法、装置、电子设备和可读存储介质
CN114756837B (zh) 一种基于区块链的数字内容溯源方法及系统
CN112784596A (zh) 一种识别敏感词的方法和装置
CN107832347B (zh) 数据降维方法、系统及电子设备
CN112580087B (zh) 加密数据搜索方法及装置、存储介质、电子设备
CN114048219A (zh) 图数据库更新方法及装置
CN110413603B (zh) 重复数据的确定方法、装置、电子设备及计算机存储介质
CN110555070B (zh) 用于输出信息的方法和装置
JP6178119B2 (ja) データ移行システム、及びデータ移行方法
CN118152861B (zh) 异源数据处理方法、装置、电子设备和计算机可读介质
CN113282542B (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