CN110597929A - 一种基于MapReduce的并行数据立方构建方法 - Google Patents

一种基于MapReduce的并行数据立方构建方法 Download PDF

Info

Publication number
CN110597929A
CN110597929A CN201910879241.0A CN201910879241A CN110597929A CN 110597929 A CN110597929 A CN 110597929A CN 201910879241 A CN201910879241 A CN 201910879241A CN 110597929 A CN110597929 A CN 110597929A
Authority
CN
China
Prior art keywords
dwarf
data
data cube
cube
dimension
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
Application number
CN201910879241.0A
Other languages
English (en)
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.)
Guangdong Provincial Institute Of Intelligent Robotics
Original Assignee
Guangdong Provincial Institute Of Intelligent Robotics
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 Guangdong Provincial Institute Of Intelligent Robotics filed Critical Guangdong Provincial Institute Of Intelligent Robotics
Priority to CN201910879241.0A priority Critical patent/CN110597929A/zh
Publication of CN110597929A publication Critical patent/CN110597929A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

一种基于MapReduce的并行数据立方构建方法,包括以下步骤:S1,Dwarf数据立方划分,对Dwarf数据立方进行等价分割,划分成为若干个子Dwarf数据立方;S2,并行Dwarf数据立方构建,根据等价分割后的子Dwarf数据立方,进行并行的建立、查询、更新和优化操作,完成Dwarf数据立方的构建。本发明一方面结合了MapReduce框架的并行性和高可扩展性,另一方面结合了Dwarf数据立方结构的数据高压缩性及数据的自索引性,既实现了数据立方的高压缩存储、提供快速的构造、增量更新操作,又克服了MapReduce机制没有索引的劣势,实现了数据立方上的快速查询操作。

Description

一种基于MapReduce的并行数据立方构建方法
技术领域
本发明涉及一种数据压缩方法,具体地说是一种基于MapReduce的并行数据立方构建方法。
背景技术
随着数字技术和计算机信息化的普及和发展,大多数企业都采用了计算机进行管理和运营。这些计算机***通常都具有强大的收集、存储和处理数据的能力。生产监控数据、医疗数据、人口统计数据、财经数据和海洋数据等,这些日积月累的数据形成了一个巨大的“宝藏”。随着市场竞争的加剧和信息社会需求的发展,从大量数据中挖掘规律性知识,指导制定生产和营销策略,就显得越来越重要。数据仓库技术和联机分析处理OLAP技术正是为此提供解决方案而产生的,它能实现对海量数据的存储管理,并给用户提供了交互的、多维的、多角度的数据结果展示方式,应分析人员要求快速、灵活地进行大数据量的复杂查询处理。数据仓库中OLAP应用需要对大量数据进行聚集计算,对***的查询性能有较高要求。数据仓库和OLAP分析都是基于多维模型的,而多维模型将数据看作数据立方cube的形式。为了有效地提高数据仓库和OLAP分析的查询性能,在数据仓库中预计算并储存数据立方是非常必要的。预先计算并实例化数据立方,就可以缩短查询的响应时间。数据立方对所有可能的分组属性组合进行预先聚集计算,并将聚集结果实例化存储,是联机分析处理的核心。但针对不断庞大的数据总量和越来越快的信息增长速度,数据立方的尺寸会急剧增长,数据立方的存储空间大小成为数据立方的一个很重要的问题。为了减小数据立方的存储尺寸,很多数据立方的压缩方法被研究。
Dwarf数据立方对于计算、存储、查询来说是一种高度的压缩结构。通过研究发现,在数据立方中存在大量的前缀冗余和后缀冗余。一般来说,数据方体中数据密集的地方前缀冗余比较多,数据稀疏的地方后缀冗余比较多。Dwarf数据立方是将具有相同前缀和后缀的数据元素压缩存储在一起,消除了这两种类型的冗余信息,大大缩减了数据立方的存储空间,将一个完全实例化的数据立方缩减到一个非常密集的数据结构中。通过消除数据的前缀冗余和后缀冗余来实现对cube压缩的目的,对cube的压缩比比较高,是一种比较有效的cube压缩算法。但随着数据量的快速增加,由于传统Dwarf立方采取单一数据文件和单机构建的方式,所以传统Dwarf立方的构造速度变的十分缓慢,数据立方的结构也变得非常复杂,远远跟不上大数据时代实际应用的需求。
而诸如MapReduce等分布式计算架构的出现,为数据立方的并行构建带来了契机。Google公司提出的分布式并行计算框架MapReduce,它简化了超大集群上的数据处理任务,可以实现应用程序和底层分布式处理机制的隔离。用户只需考虑如何实现Map和Reduce过程以满足业务需求,数据切割、任务调度、节点通信和***容错等功能均由MapReduce自动完成。如果将数据立方的压缩、构建、查询等与MapReduce架构相结合,一定可以达到良好的效果。
综上所述,数据立方技术是数据仓库、OLAP分析、大数据处理等技术中的重要研究内容,不仅具有重要的理论研究意义,而且具有广泛的实际应用价值。而随着大数据时代各个领域内数据量的快速增加,数据立方的尺寸会急剧增长,数据立方的压缩技术成为一个核心的研究问题。
发明内容
为了解决上述的技术问题,本发明提供了一种基于MapReduce的并行数据立方构建方法。
为了解决上述技术问题,本发明采取以下技术方案:
一种基于MapReduce的并行数据立方构建方法,包括以下步骤:
S1,Dwarf数据立方划分,对Dwarf数据立方进行等价分割,划分成为若干个子Dwarf数据立方;
S2,并行Dwarf数据立方构建,根据等价分割后的子Dwarf数据立方,进行并行的建立、查询、更新和优化操作,完成Dwarf数据立方的构建。
所述Dwarf数据立方划分包括:
S1.1,对Dwarf数据立方进行基础划分,对于给定Dwarf数据立方结构DTree和它的维层次DA、DB、…、DN,对于第一层次维DA进行划分,维DA的维值为A1、A2、…、An,对维DA的属性值按照设定范围分割R1、R2、…、Rm,其中Ri={Ai1、Ai2、…、Aik},根据划分好的维DA的属性值的范围,将Dwarf数据立方划分为子DwarfR1数据立方、子DwarfR2数据立方…、子DwarfRm数据立方,其中子DwarfRi数据立方由原Dwarf数据立方的Ai1、Ai2、…、Aik单元的子数据合并组成,子DwarfRi数据立方的顶层维仍然为维DA
所述Dwarf数据立方划分包括:
S1.2,对Dwarf数据立方进行多维划分,对于给定Dwarf数据立方树结构DTree和它的维层次DA、DB、…、DN,对于它的自顶向下的M个维DA、DB、…、DI、…、DM,其中M小于N,维DI的维值为I1、I2、…、In,对维DI的维值进行范围分割RI1、RI2、…、RIm,其中RIi={Ii1、Ii2、…、Iik},根据DA、DB、…、DI、…、DM中各个维的属性值的范围划分,将DTree划分为Dwarf1、Dwarf2、…、Dwarfn,其中Dwarfi由原Dwarf数据立方根据维DA、DB、…、DM的某个范围划分组合RAj、RBk、…、RMp中的各个维的属性值单元的子数据立方组成。
所述步骤S2中的并行Dwarf数据立方构建,包括存储:
存储并行Dwarf文件,将一个整体的Dwarf数据立方划分为多个子Dwarf数据立方物理文件进行存储,使用分布式文件***DFS对Dwarf数据立方的物理文件进行存储;
构建一张Dwarf立方的物理文件索引表,索引表中的每一行数据由一个二元组<range,path>组成,其中range记录一个特定划分的范围,path记录该划分下的子Dwarf立方的分布式文件的存储全路径,Dwarf数据立方的物理文件索引表以文本文件的方式存储于分布式文件***中;
Map、Shuffle和Reduce阶段,在Map阶段,首先对无序的源记录文件按照分块逐条读取数据元组,并根据子Dwarf数据立方的范围划分的条件,生成<key,value>值对,其中key由复合键<group,offset>组成,group是该条记录所归属子Dwarf的分组标识,offset用于组内记录的排序,value保存的是当前的整个记录元组;
Shuffle阶段将Map阶段生成的<key,value>值对进行分组,对于key中相同group的值对被分配到相同的组中,并且对同一组中的所有值对按照key中的offset进行排序,然后最终将同一组的数据传送到单一的Reduce节点上去;
每一个Reduce任务对同一组的值对列表进行处理,对子Dwarf数据立方进行建立,并把子Dwarf数据立方文件存储到分布式文件***DFS中,同时生成<range,path>值对,作为Reduce任务的输出,最终收集所有Reduce任务的输出<range,path>值对,存储到并行Dwarf数据立方的物理文件索引表中。
所述步骤S2中的并行Dwarf数据立方构建,包括:对并行Dwarf数据立方进行查询;
在Map阶段,逐条读取Dwarf数据立方的分布式文件索引表,每个Map任务根据查询的检索条件对文件索引表中每条数据的划分范围range进行过滤,找出满足检索条件的子Dwarf数据立方;然后对于满足检索条件的子Dwarf数据立方,在分布式文件***中对对应的物理文件进行检索,并将检索结果生成<key,value>值对,其中key由查询语句构成,value存储当前子Dwarf数据立方的检索结果;
在Shuffle阶段,将Map阶段中集群各个节点生成的所有<key,value>值对归并为一组并传送到唯一的一个Reduce任务中;
在Reduce阶段,将多个子Dwarf数据立方的检索结果合并到一起生成最终的查询结果,组成查询结果键值对<search,result>,并将最终的查询结果返回给前端用户。
所述步骤S2中的并行Dwarf数据立方构建,包括:对并行Dwarf立方进行数据更新;
采用追加增量Dwarf立方文件的方式来支持并行Dwarf数据立方的持续增量更新,具体为:
首先对历史数据信息进行并行Dwarf数据立方结构的初始建立,然后针对持续到来的增量更新数据,数据仓库中的数据保持追加而不进行删除和修改,对新的数据立方单独建立新的Dwarf数据立方结构Δd,并将该Dwarf数据立方结构Δd记录到Dwarf数据立方的分布式文件索引表中,然后将持续的数据更新作用到增量Dwarf数据立方Δd上,当Dwarf数据立方Δd的数据量大小达到设定的上限条件后,对Dwarf数据立方Δd进行重建优化,并作为正式的Dwarf结构进行存放,并记录到Dwarf结构的文件索引表中;然后产生新的增量数据立方Δd,接受新的增量更新需求。
所述步骤S2中的并行Dwarf数据立方构建,包括:对并行Dwarf立方进行优化,具体为:
Dwarf建立的并行优化,首先对数据仓库中的历史数据进行一次扫描,对每个维的信息进行统计,找出数据的分布情况;然后根据数据的分布规律,选取数据分布均匀的维作为Dwarf数据立方的划分维;
查询的并行优化,包括点查询和范围查询,其中点查询为:将点查询时检索条件使用最多的维作为Dwarf数据立方划分的维;范围查询为:将用于范围查询的维作为Dwarf立方划分的维;
增量更新的并行优化,将一个单一的Dwarf数据立方划分为多个独立的物理文件,将持续到达的更新数据平均地分配到所有的子Dwarf数据立方上。
本发明提出的基于MapReduce框架的并行Dwarf数据立方构建算法首先能够提供高效的数据立方的建立,其次针对MapReduce架构无索引的顺序扫描机制,Dwarf立方的自索引机制提供了高效的查询;然后并行Dwarf立方克服了传统Dwarf立方较低的增量更新性能,为Dwarf立方的实际应用提供了条件;最后,并行Dwarf立方具有很好的可扩展性,随着数据量的增加,可以通过动态增加节点的方法,有效地提高Dwarf立方的性能,满足用户的需求。
附图说明
图1为本发明对应的Dwarf数据立方示意图;
图2为本发明并行Dwarf数据立方的存储方式示意图;
图3为本发明并行Dwarf数据立方的建立过程示意图;
图4为本发明并行Dwarf数据立方的查询过程示意图;
图5为本发明并行Dwarf数据立方的更新过程示意图。
具体实施方式
为能进一步了解本发明的特征、技术手段以及所达到的具体目的、功能,下面结合附图与具体实施方式对本发明作进一步详细描述。
如附图1-5所示,本发明提出了一种基于MapReduce的并行数据立方构建方法,包括以下步骤:
S1,Dwarf数据立方划分,对Dwarf数据立方进行等价分割,划分成为若干个子Dwarf数据立方;
S2,并行Dwarf数据立方构建,根据等价分割后的子Dwarf数据立方,进行并行的建立、查询、更新和优化操作,完成Dwarf数据立方的构建。
对基本的Dwarf数据立方的结构特点进行分析可知,对于Dwarf数据立方结构中的任意一个节点N,具有单元值为Ai1、Ai2、…、Aik、All,它的子树可以分为两种:一种是该层次维属性的某个具体值指向的子节点,另一种是该节点的All单元指向的子节点。Dwarf数据立方树结构的特点是任意一个节点N的非All单元子节点没有任何交叉,只有All单元的子节点才有可能有指针指向其他节点。为了使Dwarf立方支持并行处理,对Dwarf数据立方实现等价分割。
所述Dwarf数据立方划分包括:
S1.1,对Dwarf数据立方进行基础划分,对于给定Dwarf数据立方结构DTree和它的维层次DA、DB、…、DN,对于第一层次维DA进行划分,维DA的维值为A1、A2、…、An,对维DA的属性值按照设定范围分割R1、R2、…、Ri、…、Rm,从而得到m个范围,其中Ri={Ai1、Ai2、…、Aik},根据划分好的维DA的属性值的范围,将Dwarf数据立方划分为子DwarfR1数据立方、子DwarfR2数据立方…、子DwarfRm数据立方,其中子DwarfRi数据立方由原Dwarf数据立方的Ai1、Ai2、…、Aik单元的子数据合并组成,子DwarfRi数据立方的顶层维仍然为维DA
在Dwarf数据立方的基础划分中,如果范围Ri仅包含一个值Ai1,那么可以不再保留维DA的单元格Ai1、All,子DwarfRi数据立方的顶层维直接由Ai1的子结点维DB组成。
S1.2,对于给定Dwarf数据立方结构DTree和它的维层次DA、DB、…、DN。对于它的自顶向下的M个维DA、DB、…、DI、…、DM,M小于N,维DI的维值为I1、I2、…、In,对维DI的维值进行范围分割RI1、RI2、…、RIm,其中RIi={Ii1、Ii2、…、Iik}。根据DA、DB、…、DI、…、DM各个维的属性值的范围划分,将Dwarf数据立方DTree划分为Dwarf1、Dwarf2、…、Dwarfn,其中Dwarfi由原Dwarf数据立方根据维DA、DB、…、DM的某个范围划分组合RAj、RBk、…、RMp中的各个维的属性值单元的子树组成。
Dwarf数据立方的多维划分中,用于划分各个维层次DA、DB、…、DM的节点中的All单元的子节点与原单一Dwarf树都可能不同,因此都需要重新进行计算。
所述步骤S2中的并行Dwarf数据立方构建,包括存储:
S2.11,存储并行Dwarf文件,将一个整体的Dwarf数据立方划分为多个子Dwarf数据立方物理文件进行存储,使用分布式文件***DFS对Dwarf数据立方的物理文件进行存储。构建一张Dwarf立方的物理文件索引表,索引表中的每一行数据由一个二元组<range,path>组成,其中range记录一个特定划分的范围,path记录该划分下的子Dwarf立方的分布式文件的存储全路径,Dwarf数据立方的物理文件索引表以文本文件的方式存储于分布式文件***中。
S2.12,Map、Shuffle和Reduce阶段,在Map阶段,首先对无序的源记录文件按照分块逐条读取数据元组,并根据子Dwarf数据立方的范围划分的条件,生成<key,value>值对,其中key由复合键<group,offset>组成,group是该条记录所归属子Dwarf的分组标识,offset用于组内记录的排序,value保存的是当前的整个记录元组。
Shuffle阶段将Map阶段生成的<key,value>值对进行分组,对于key中相同group的值对被分配到相同的组中,并且对同一组中的所有值对按照key中的offset进行排序,然后最终将同一组的数据传送到单一的Reduce节点上去。
每一个Reduce任务对同一组的值对列表进行处理,对子Dwarf数据立方进行建立,并把子Dwarf数据立方文件存储到分布式文件***DFS中,同时生成<range,path>值对,作为Reduce任务的输出,最终收集所有Reduce任务的输出<range,path>值对,存储到并行Dwarf数据立方的物理文件索引表中。
所述步骤S2中的并行Dwarf数据立方构建,还包括:对并行Dwarf数据立方进行查询;
S2.2,在Map阶段,逐条读取Dwarf数据立方的分布式文件索引表,每个Map任务根据查询的检索条件对文件索引表中每条数据的划分范围range进行过滤,找出满足检索条件的子Dwarf数据立方;然后对于满足检索条件的子Dwarf数据立方,在分布式文件***中对对应的物理文件进行检索,并将检索结果生成<key,value>值对,其中key由查询语句构成,value存储当前子Dwarf数据立方的检索结果。
在Shuffle阶段,将Map阶段中集群各个节点生成的所有<key,value>值对归并为一组并传送到唯一的一个Reduce任务中。
在Reduce阶段,将多个子Dwarf数据立方的检索结果合并到一起生成最终的查询结果,组成查询结果键值对<search,result>,并将最终的查询结果返回给前端用户。
所述步骤S2中的并行Dwarf数据立方构建,包括:对并行Dwarf立方进行数据更新;
S2.3,采用追加增量Dwarf立方文件的方式来支持并行Dwarf数据立方的持续增量更新,采用追加增量Dwarf立方文件的方式来支持并行Dwarf的持续增量更新,具体为:
首先对历史数据信息进行并行Dwarf数据立方结构的初始建立,然后针对持续到来的增量更新数据,数据仓库中的数据保持追加而不进行删除和修改,对新的数据立方单独建立新的Dwarf数据立方结构Δd,并将该Dwarf数据立方结构Δd记录到Dwarf数据立方的分布式文件索引表中,然后将持续的数据更新作用到增量Dwarf数据立方Δd上,当Dwarf数据立方Δd的数据量大小达到设定的上限条件后,对Dwarf数据立方Δd进行重建优化,并作为正式的Dwarf结构进行存放,并记录到Dwarf结构的文件索引表中;然后产生新的增量数据立方Δd,接受新的增量更新需求。
所述步骤S2中的并行Dwarf数据立方构建,包括:对并行Dwarf立方进行优化,具体为:
S2.41,Dwarf建立的并行优化,为了充分提高建立过程的并行性,就要尽可能保证每个子Dwarf数据立方的数据量大体相当,并控制好子Dwarf数据立方的总体数目和集群及Reduce任务数量的关系。本发明通过对子Dwarf数据立方的划分方案的调整控制来实现建立过程的并行优化。Dwarf数据立方建立的并行优化具体思想为:首先对数据仓库中的历史数据进行一次扫描,对每个维的信息进行统计,找出数据的分布情况;然后根据数据的分布规律,尽量选取数据分布比较均匀的维作为Dwarf数据立方的划分维;关于子Dwarf数据立方的数目,尽量选取能保证子Dwarf数据立方数目为集群中Reduce任务节点数量的大约整数倍的划分方案。
S2.42,查询的并行优化,包括点查询和范围查询,
其中对于点查询来说,如果点查询的检索条件相关的维被作为Dwarf立方的划分维,那么点查询时只需要检索对应的子Dwarf立方就可以;否则需要检索所有的子Dwarf立方,然后将各个子结果综合到一起作为最终查询结果。因此针对点查询来说,优化方法是将点查询时检索条件使用最多的维作为Dwarf立方划分的维。
对于范围查询来说,和点查询不同,Dwarf立方需要将范围中的每个单结点的聚集值进行合并,如果范围较大,需要聚集的值就比较多。因此如果范围查询时并行性越高,范围检索就会越快。所以对范围查询来说,有利的情况是将用于范围查询的维作为Dwarf数据立方划分的维,这样可以保证范围检索时,数据会分布到多个子Dwarf立方上从而达到较大的并行性。
S2.42,增量更新的并行优化,将一个单一的Dwarf数据立方划分为多个独立的物理文件,将持续到达的更新数据平均地分配到所有的子Dwarf数据立方上。
上述增量更新的并行优化思想是:首先针对具体的应用对持续更新的数据进行采集并分析,找出能够平均分配新数据的维,并制定出维值的范围划分方案。然后按照这种方案来对Dwarf数据立方进行划分,从而使Dwarf数据立方的增量更新达到最好的并行性。通过这种优化处理,虽然每一个子Dwarf数据立方上的增量更新仍然只能是串行进行,但是多个子Dwarf数据立方上的更新相互之间并没有影响,可以并行执行,从而使整个逻辑Dwarf数据立方的增量更新达到了高并行性。
如下表一所示
上述为一个事实表实施例,该事实表中,包含4个维属性和1个数值型度量属性。事实表的数据按照各个维属性的值进行排序,数据立方的聚合函数以Sum为例进行介绍。
如下表二
上表二,是表一的事实表实施例对应的数据立方示意图。数据立方将所有维属性可能的组合方式进行groupby操作,不参加groupby操作的属性列以<ALL>填充,数据库中一般称之为cubeby操作。比如{D_A,D_B,D_C,D_D},{D_A,D_B,D_C},{D_A,D_B,D_D},{D_A,D_C,D_D}等等。由于数据立方的数据量与对应的事实表相比会大很多,图中仅仅列出数据立方的一部分数据。
图1所示就是一个从表一中的事实表得出的一个Dwarf数据立方结构,根据OLAP的需求,它可以是聚集函数Sum、Count、Avg、Max、Min等,这里以Sum为例进行介绍。Dwarf树的高度等于维数,图中Dwarf立方的整个结构分为4层,每一层对应原始数据的一个维度。每一个维由若干个节点(node)组成,节点又是由若干个单元(cell)构成。每一个节点都有一个特殊单元,位于每个节点的末尾部分。对于非叶子节点,节点中的单元存储的都是指向下一层节点的指针以及该单元对应的候选值;对于叶子节点,单元中存储的是候选值以及度量值。从根到叶子的每一条路经都对应着数据立方中的一条记录。例如<A1,B1,C2,D2,70>,就对应着图中最左边一条从根到叶子节点的路径,最后的度量值70存储在叶子节点的D2单元中。对于稠密数据,前缀冗余将是主要的冗余形式;对稀疏数据,后缀冗余将是主要的冗余形式。Dwarf有着非常好的压缩效果,非常适合于存储超大规模的数据。
对于图1中的Dwarf数据立方体,根据第一层维对其进行分割。对于维值A1、A2、…、An,将它们的子树TA1、TA2、…、TAn分割出来生成独立的新的Dwarf立方树DA1、DA2、…、DAn。对于维D_A层的All单元的数据节点,直接丢弃,其值由子Dwarf树DA1、DA2、…、DAn动态计算生成。
如果维D_A的势比较大,维的不同值个数较多,对于上面的这种划分,Dwarf子树的数量会非常多,可能会超过预期的Dwarf并行处理需求数量。所以也可以将上面的单值划分扩展为维属性值的范围划分。例如,维值A1到Ak单元的所有子树构成子Dwarf树DA1-Ak,维值Ak+1到Am单元的子树构成子Dwarf树DAk+1-Am
图2所示表示并行Dwarf数据立方的存储方式示意图,同时也是采用了上述的第一种通过维值的单值划分方式。逻辑上一个整体的Dwarf数据立方由一个文件索引表来表示,它记录每个范围和相应范围对应的子Dwarf文件的路径名称。Dwarf立方按照维D_A进行划分,维D_A的每一个属性值A1、A2、…、An的子树作为一个单独的子Dwarf立方。在文件索引表中,维D_A的每一个属性值A1、A2、…、An分别对应一条数据,分别记录属性值Ai和对应的子立方Dwarfi的分布式文件的全路径Pathi
图3所示为并行Dwarf数据立方的建立过程。建立过程总共分为三个阶段,分别是Map、Shuffle和Reduce阶段,整个构建过程如图3所示。
在Map阶段,***首先对无序的源记录文件按照分块逐条读取数据元组,并根据子Dwarf数据立方的范围划分的条件,生成<key,value>值对。例如,在图3给出的例子中,对于元组(A1,B1,C2,D2,70)来说,Map阶段将该元组划分为<key,value>值对,其中key中的group是维DA的属性值A1,offset由除去维DA后剩下的其他维值(B1,C2,D2)组成,value由元组除去维DA后的所有剩余属性(B1,C2,D2,70)组成。
Shuffle阶段将Map阶段生成的<key,value>值对进行分组,对于key中相同group的值对被分配到相同的组中,并且对同一组中的所有值对按照key中的offset进行排序,然后最终将同一组的数据传送到单一的Reduce节点上去。例如Shuffle阶段将源记录中DA维为A1的所有元组都分到同一组,然后将同属于A1组的所有记录根据offset的值,即维DB、DC、DD进行排序。
Reduce任务调用单机构造Dwarf数据立方的算法,对子Dwarf树进行建立,并把子Dwarf立方文件存储到分布式文件***DFS中,同时生成<range,path>值对,***到并行Dwarf数据立方的物理文件索引表中。
图4所示为并行Dwarf数据立方的查询过程。查询过程也分为三个阶段,分别是Map、Shuffle和Reduce阶段。
图5所示为并行Dwarf数据立方的增量更新过程。通过本发明设计的追加增量Dwarf立方文件Δd的方式,不管从对更新的处理速度上,还是对包含大量信息的主Dwarf立方文件的保护上,都起到了很大的作用。由于Δd的数据量和主Dwarf文件相比小的多,因此当Δd的性能下降时,可以多次对其进行结构重建来提高性能。这样经过较长的时间后,***会产生比较多的子Dwarf数据立方文件。当到一定时期后,在负载空闲阶段,***对多个较小的子Dwarf数据立方进行一次合并重建,用来减小***中子Dwarf数据立方的数量,提高查询的效率。或者在夜间等应用空闲阶段,***对整个数据也可以进行一次大的重建,将初始的Dwarf数据立方和后续的多个子Dwarf数据立方进行合并,重新生成整体的初始Dwarf数据立方。通过上述的这些方式,可以大大提高***的效率并降低***的负载消耗。
实际应用中,对Dwarf数据立方的初始建立和后续增量更新的并行优化选取的子Dwarf数据立方划分方法往往是不同的。针对Dwarf数据立方的建立,选取的范围划分往往是能将历史数据平均分割的,比如使用时间维来进行范围划分;而针对Dwarf数据立方的增量更新,选取的范围划分往往是能将实时数据平均分割的,比如使用地区维来进行范围划分,因此针对Dwarf数据立方的建立和更新的优化方案往往是相互冲突的。
本发明采取多种划分方式相结合的方法来进行综合优化。针对Dwarf数据立方的建立,***使用如时间维等能将历史数据平均分割的划分方式来进行Dwarf数据立方的分割;针对Dwarf数据立方的增量更新,***使用如地区维等能将实时数据平均分割的划分方式对Dwarf数据立方进行分割。这样优化之后,***既能提高Dwarf数据立方建立的效率,也能增加Dwarf数据立方的并行更新的吞吐量。
需要说明的是,以上仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,但是凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种基于MapReduce的并行数据立方构建方法,包括以下步骤:
S1,Dwarf数据立方划分,对Dwarf数据立方进行等价分割,划分成为若干个子Dwarf数据立方;
S2,并行Dwarf数据立方构建,根据等价分割后的子Dwarf数据立方,进行并行的建立、查询、更新和优化操作,完成Dwarf数据立方的构建。
2.根据权利要求1所述的基于MapReduce的并行数据立方构建方法,其特征在于,所述Dwarf数据立方划分包括:
S1.1,对Dwarf数据立方进行基础划分,对于给定Dwarf数据立方结构DTree和它的维层次DA、DB、…、DN,对于第一层次维DA进行划分,维DA的维值为A1、A2、…、An,对维DA的属性值按照设定范围分割R1、R2、…、Rm,其中Ri={Ai1、Ai2、…、Aik},根据划分好的维DA的属性值的范围,将Dwarf数据立方划分为子DwarfR1数据立方、子DwarfR2数据立方…、子DwarfRm数据立方,其中子DwarfRi数据立方由原Dwarf数据立方的Ai1、Ai2、…、Aik单元的子数据合并组成,子DwarfRi数据立方的顶层维仍然为维DA
3.根据权利要求1所述的基于MapReduce的并行数据立方构建方法,其特征在于,所述Dwarf数据立方划分包括:
S1.2,对Dwarf数据立方进行多维划分,对于给定Dwarf数据立方树结构DTree和它的维层次DA、DB、…、DN,对于它的自顶向下的M个维DA、DB、…、DI、…、DM,其中M小于N,维DI的维值为I1、I2、…、In,对维DI的维值进行范围分割RI1、RI2、…、RIm,其中RIi={Ii1、Ii2、…、Iik},根据DA、DB、…、DI、…、DM中各个维的属性值的范围划分,将DTree划分为Dwarf1、Dwarf2、…、Dwarfn,其中Dwarfi由原Dwarf数据立方根据维DA、DB、…、DM的某个范围划分组合RAj、RBk、…、RMp中的各个维的属性值单元的子数据立方组成。
4.根据权利要求1所述的基于MapReduce的并行数据立方构建方法,其特征在于,所述步骤S2中的并行Dwarf数据立方构建,包括存储:
存储并行Dwarf文件,将一个整体的Dwarf数据立方划分为多个子Dwarf数据立方物理文件进行存储,使用分布式文件***DFS对Dwarf数据立方的物理文件进行存储;
构建一张Dwarf立方的物理文件索引表,索引表中的每一行数据由一个二元组<range,path>组成,其中range记录一个特定划分的范围,path记录该划分下的子Dwarf立方的分布式文件的存储全路径,Dwarf数据立方的物理文件索引表以文本文件的方式存储于分布式文件***中;
Map、Shuffle和Reduce阶段,在Map阶段,首先对无序的源记录文件按照分块逐条读取数据元组,并根据子Dwarf数据立方的范围划分的条件,生成<key,value>值对,其中key由复合键<group,offset>组成,group是该条记录所归属子Dwarf的分组标识,offset用于组内记录的排序,value保存的是当前的整个记录元组;
Shuffle阶段将Map阶段生成的<key,value>值对进行分组,对于key中相同group的值对被分配到相同的组中,并且对同一组中的所有值对按照key中的offset进行排序,然后最终将同一组的数据传送到单一的Reduce节点上去;
每一个Reduce任务对同一组的值对列表进行处理,对子Dwarf数据立方进行建立,并把子Dwarf数据立方文件存储到分布式文件***DFS中,同时生成<range,path>值对,作为Reduce任务的输出,最终收集所有Reduce任务的输出<range,path>值对,存储到并行Dwarf数据立方的物理文件索引表中。
5.根据权利要求4所述基于MapReduce的并行数据立方构建方法,其特征在于,所述步骤S2中的并行Dwarf数据立方构建,包括:对并行Dwarf数据立方进行查询;
在Map阶段,逐条读取Dwarf数据立方的分布式文件索引表,每个Map任务根据查询的检索条件对文件索引表中每条数据的划分范围range进行过滤,找出满足检索条件的子Dwarf数据立方;然后对于满足检索条件的子Dwarf数据立方,在分布式文件***中对对应的物理文件进行检索,并将检索结果生成<key,value>值对,其中key由查询语句构成,value存储当前子Dwarf数据立方的检索结果;
在Shuffle阶段,将Map阶段中集群各个节点生成的所有<key,value>值对归并为一组并传送到唯一的一个Reduce任务中;
在Reduce阶段,将多个子Dwarf数据立方的检索结果合并到一起生成最终的查询结果,组成查询结果键值对<search,result>,并将最终的查询结果返回给前端用户。
6.根据权利要求5所述基于MapReduce的并行数据立方构建方法,其特征在于,所述步骤S2中的并行Dwarf数据立方构建,包括:对并行Dwarf立方进行数据更新;
采用追加增量Dwarf立方文件的方式来支持并行Dwarf数据立方的持续增量更新,具体为:
首先对历史数据信息进行并行Dwarf数据立方结构的初始建立,然后针对持续到来的增量更新数据,数据仓库中的数据保持追加而不进行删除和修改,对新的数据立方单独建立新的Dwarf数据立方结构Δd,并将该Dwarf数据立方结构Δd记录到Dwarf数据立方的分布式文件索引表中,然后将持续的数据更新作用到增量Dwarf数据立方Δd上,当Dwarf数据立方Δd的数据量大小达到设定的上限条件后,对Dwarf数据立方Δd进行重建优化,并作为正式的Dwarf结构进行存放,并记录到Dwarf结构的文件索引表中;然后产生新的增量数据立方Δd,接受新的增量更新需求。
7.根据权利要求6所述基于MapReduce的并行数据立方构建方法,其特征在于,所述步骤S2中的并行Dwarf数据立方构建,包括:对并行Dwarf立方进行优化,具体为:
Dwarf建立的并行优化,首先对数据仓库中的历史数据进行一次扫描,对每个维的信息进行统计,找出数据的分布情况;然后根据数据的分布规律,选取数据分布均匀的维作为Dwarf数据立方的划分维;
查询的并行优化,包括点查询和范围查询,其中点查询为:将点查询时检索条件使用最多的维作为Dwarf数据立方划分的维;范围查询为:将用于范围查询的维作为Dwarf立方划分的维;
增量更新的并行优化,将一个单一的Dwarf数据立方划分为多个独立的物理文件,将持续到达的更新数据平均地分配到所有的子Dwarf数据立方上。
CN201910879241.0A 2019-09-18 2019-09-18 一种基于MapReduce的并行数据立方构建方法 Pending CN110597929A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910879241.0A CN110597929A (zh) 2019-09-18 2019-09-18 一种基于MapReduce的并行数据立方构建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910879241.0A CN110597929A (zh) 2019-09-18 2019-09-18 一种基于MapReduce的并行数据立方构建方法

Publications (1)

Publication Number Publication Date
CN110597929A true CN110597929A (zh) 2019-12-20

Family

ID=68860733

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910879241.0A Pending CN110597929A (zh) 2019-09-18 2019-09-18 一种基于MapReduce的并行数据立方构建方法

Country Status (1)

Country Link
CN (1) CN110597929A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114077609A (zh) * 2022-01-19 2022-02-22 北京四维纵横数据技术有限公司 数据存储及检索方法,装置,计算机可读存储介质及电子设备
CN115422126A (zh) * 2022-11-04 2022-12-02 浪潮软件股份有限公司 一种证照ofd版式文件快速转图片的方法、***及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183368A (zh) * 2007-12-06 2008-05-21 华南理工大学 联机分析处理中分布式计算及查询海量数据的方法和***

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183368A (zh) * 2007-12-06 2008-05-21 华南理工大学 联机分析处理中分布式计算及查询海量数据的方法和***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
师金钢等: "MapReduce 环境下的并行 Dwarf 立方构建", 《计算机科学与探索》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114077609A (zh) * 2022-01-19 2022-02-22 北京四维纵横数据技术有限公司 数据存储及检索方法,装置,计算机可读存储介质及电子设备
CN115422126A (zh) * 2022-11-04 2022-12-02 浪潮软件股份有限公司 一种证照ofd版式文件快速转图片的方法、***及装置
CN115422126B (zh) * 2022-11-04 2023-03-24 浪潮软件股份有限公司 一种证照ofd版式文件快速转图片的方法、***及装置

Similar Documents

Publication Publication Date Title
CN108292315B (zh) 储存和检索数据立方体中的数据
CN106095862B (zh) 集中式可扩展融合型多维复杂结构关系数据的存储方法
CN103246749B (zh) 面向分布式计算的矩阵数据库***及其查询方法
Lu et al. Scalagist: Scalable generalized search trees for mapreduce systems [innovative systems paper]
CN102982103A (zh) 一种olap海量多维数据维存储方法
Liang et al. Express supervision system based on NodeJS and MongoDB
US10977280B2 (en) Systems and methods for memory optimization interest-driven business intelligence systems
CN105631003A (zh) 支持海量数据分组统计的智能索引构建、查询及维护方法
US11755284B2 (en) Methods and systems for improved data retrieval and sorting
CN113032427B (zh) 一种用于cpu和gpu平台的向量化查询处理方法
US20240126762A1 (en) Creating compressed data slabs that each include compressed data and compression information for storage in a database system
Zhao et al. A practice of TPC-DS multidimensional implementation on NoSQL database systems
CN110597929A (zh) 一种基于MapReduce的并行数据立方构建方法
Chambi et al. Optimizing druid with roaring bitmaps
Tian et al. A survey of spatio-temporal big data indexing methods in distributed environment
Song et al. Haery: a Hadoop based query system on accumulative and high-dimensional data model for big data
Xie et al. Silverback: Scalable association mining for temporal data in columnar probabilistic databases
CN112269797B (zh) 一种卫星遥感数据在异构计算平台上的多维查询方法
CN111026817B (zh) 一种多维计算方法及装置
CN111984756A (zh) 一种实现Hbase二级索引的方法
Guzun et al. Scalable preference queries for high-dimensional data using map-reduce
Hassan STORAGE STRUCTURES IN THE ERA OF BIG DATA: FROM DATA WAREHOUSE TO LAKEHOUSE
Yu et al. MPDBS: A multi-level parallel database system based on B-Tree
Wu et al. PABIRS: A data access middleware for distributed file systems
Wang et al. Research on Parallel Computing Method of Hydrological Data Cube

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20191220