CN111026817B - 一种多维计算方法及装置 - Google Patents

一种多维计算方法及装置 Download PDF

Info

Publication number
CN111026817B
CN111026817B CN201911249227.9A CN201911249227A CN111026817B CN 111026817 B CN111026817 B CN 111026817B CN 201911249227 A CN201911249227 A CN 201911249227A CN 111026817 B CN111026817 B CN 111026817B
Authority
CN
China
Prior art keywords
data
analysis
analyzed
dimension
target
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
CN201911249227.9A
Other languages
English (en)
Other versions
CN111026817A (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.)
State Grid Information and Telecommunication Co Ltd
Beijing China Power Information Technology Co Ltd
Original Assignee
State Grid Information and Telecommunication Co Ltd
Beijing China Power Information Technology Co Ltd
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 State Grid Information and Telecommunication Co Ltd, Beijing China Power Information Technology Co Ltd filed Critical State Grid Information and Telecommunication Co Ltd
Priority to CN201911249227.9A priority Critical patent/CN111026817B/zh
Publication of CN111026817A publication Critical patent/CN111026817A/zh
Application granted granted Critical
Publication of CN111026817B publication Critical patent/CN111026817B/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/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
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种多维计算方法,包括:在接收到对待分析数据的分析请求时,获取所述分析请求中的各个分析维度;依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析分析数据;将所述目标待分析数据依进行分块,得到各个分块数据;依据所述分析请求对所述各个分块数据进行处理,得到各个分块计算结果;依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果。上述的计算方法,将所述待分析数据进行分块后,针对每一个分块进行处理,计算量不会随着维度的增加成指数增长,减少了计算量,提高了计算的速度。

Description

一种多维计算方法及装置
技术领域
本发明涉及大数据技术领域,尤其涉及一种多维计算方法及装置。
背景技术
MOLAP多维数据模型和数据立方体理论,主要有维度和度量两个概念,维度是想要考察的角度,而度量则是在特定维度组合上考察事实的数值。通常用事实表和维表来定义这种模型,事实表包含了事实事件,主要描述了事件的具体内容和要素,可以从中选取维度、度量,维表则是包含了事件要素的扩展,也就是维表用于对事实表中的维度进行详细描述,可以从中选取更细节的维度,事实表和维表之间通过主键和外键进行连接。在多维数据模型上进行OLAP分析就是选取需要的维度组合来考察对应的度量。多维数据模型把数据看成由维度和度量组成的Cube的形式,根据Cube的定义,一个N维全量Cube有2^N个Cuboid。
因此,Cube会随着维度的增长呈指数级增长,在原始数据特别大的情况下,生成的Cube也会特别大,由于将Cube作为整体进行计算,会严重拖慢预计算的速度,导致维度灾难。
发明内容
有鉴于此,本发明提供了一种多维计算方法及装置,用以解决现有技术中Cube会随着维度的增长呈指数级增长,在原始数据特别大的情况下,生成的Cube也会特别大,由于将Cube作为整体进行计算,会严重拖慢预计算的速度,导致维度灾难的问题。具体方案如下:
一种多维计算方法,包括:
在接收到对待分析数据的分析请求时,获取所述分析请求中的各个分析维度;
依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析分析数据;
将所述目标待分析数据依进行分块,得到各个分块数据;
依据所述分析请求对所述各个分块数据进行处理,得到各个分块计算结果;
依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果。
上述的方法,可选的,依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析分析数据,包括:
获取所述待分数据中包含的各个初始分析维度;
将所述各个初始分析维度中与所述各个分析维度不存在关联关系的初始分析维度作为目标初始分析维度;
删除所述待分析数据中与所述目标初始分析维度对应的数据,得到所述目标待分析数据。
上述的方法,可选的,将所述目标待分析数据依进行分块,得到各个分块数据,包括:
将所述目标待分析数据依据维度值进行分片,得到各个分片;
将所述各个分片依据预设的维度范围进行分块,得到各个分块数据。
上述的方法,可选的,依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果,包括:
将所述各个分块计算结果中结果标识相同的分块计算结果进行整合,得到各个计算结果
获取所述各个分析维度的分析标识;
针对每一个计算结果在各个分析标识中查找与其对应的结果标识相同的目标分析标识,将所述目标分析标识对应的分析维度作为目标分析维度,将该计算结果作为所述目标分析维度的目标计算结果。
上述的方法,可选的,所述待分析数据由Cube组成,所述Cube中包含至少一个Cube段,每一个Cube段包含数据的起止时间,还包括:
当检测到新增数据请求时,获取所述待分析数据中最后一个Cube的结束时间;
将所述结束时间作为起始时间构建新增Cube,将所述新增数据存储到所述新增Cube。
一种多维计算装置,包括:
维度获取模块,用于在接收到对待分析数据的分析请求时,获取所述分析请求中的各个分析维度;
筛选模块,用于依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析分析数据;
分块模块,用于将所述目标待分析数据依进行分块,得到各个分块数据;
处理模块,用于依据所述分析请求对所述各个分块数据进行处理,得到各个分块计算结果;
整合模块,用于依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果。
上述的装置,可选的,所述筛选模块包括:
初始分析维度获取单元,用于获取所述待分数据中包含的各个初始分析维度;
第一确定单元,用于将所述各个初始分析维度中与所述各个分析维度不存在关联关系的初始分析维度作为目标初始分析维度;
删除单元,用于删除所述待分析数据中与所述目标初始分析维度对应的数据,得到所述目标待分析数据。
上述的装置,可选的,所述分块模块包括:
分片单元,用于将所述目标待分析数据依据维度值进行分片,得到各个分片;
分块单元,用于将所述各个分片依据预设的维度范围进行分块,得到各个分块数据。
上述的装置,可选的,所述整合模块包括:
整合单元,用于将所述各个分块计算结果中结果标识相同的分块计算结果进行整合,得到各个计算结果
分析标识获取单元,用于获取所述各个分析维度的分析标识;
第二确定单元,用于针对每一个计算结果在各个分析标识中查找与其对应的结果标识相同的目标分析标识,将所述目标分析标识对应的分析维度作为目标分析维度,将该计算结果作为所述目标分析维度的目标计算结果。
上述的装置,可选的,所述待分析数据由Cube组成,所述Cube中包含至少一个Cube段,每一个Cube段包含数据的起止时间,还包括:
时间获取模块,用于当检测到新增数据请求时,获取所述待分析数据中最后一个Cube的结束时间;
构建模块,用于将所述结束时间作为起始时间构建新增Cube,将所述新增数据存储到所述新增Cube。
与现有技术相比,本发明包括以下优点:
本发明公开了一种多维计算方法,包括:在接收到对待分析数据的分析请求时,获取所述分析请求中的各个分析维度;依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析分析数据;将所述目标待分析数据依进行分块,得到各个分块数据;依据所述分析请求对所述各个分块数据进行处理,得到各个分块计算结果;依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果。上述的计算方法,将所述待分析数据进行分块后,针对每一个分块进行处理,计算量不会随着维度的增加成指数增长,减少了计算量,提高了计算的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种多维计算方法流程图;
图2为本申请实施例公开的一种多维计算方法又一流程图;
图3为本申请实施例公开的一种多维计算装置结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
本发明公开了一种多维计算方法及装置,应用在多维计算过程中,基于MOLAP(Multidimension Online analytical processing)多维数据模型和数据立方体理论,其中,所述MOLAP包括维度和度量两个概念,维度是想要考察的角度,而度量则是在特定维度组合上考察事实的数值。通常用事实表和维表来定义这种模型,事实表包含了事实事件,主要描述了事件的具体内容和要素,可以从中选取维度、度量,维表则是包含了事件要素的扩展,也就是维表用于对事实表中的维度进行详细描述,可以从中选取更细节的维度,事实表和维表之间通过主键和外键进行连接。在多维数据模型上进行联机分析处理OLAP(Onlineanalytical processing)就是选取需要的维度组合来考察对应的度量。多维数据模型把数据看成由维度和度量组成的Cube的形式,设有多维数据集合R(d1,d2,···,dm;M),其中d1到dm为数据集R包含的维度,M为数据集R包含的度量集合。基于数据集R的Cube以及Cube计算相关标准化定义如下:
1.Cube中由维度组合作为坐标组合确定某一点,该点保存着对应度量值。Cube可以看成由Cuboid(子立方体)组成,每个Cuboid是Cube包含的维度集合的特定子集上的子Cube。。可以理解为分别通过从待分析数据聚合掉不需要的维度而生成的。
2.标准聚合操作GroupBy。R上的标准聚合操作可视为一个三元组
GroupBy(R,α,F),其中为被选中的聚合维度,其中1≤i≤j≤m,F是针对度量集合M的幂集合的聚合函数,比如SUM、MIN。
3.Cube聚合计算操作CubeBy。R上的Cube聚合计算操作同样可视为为一个三元组CubeBy(R,β,F),其中为Cube需要包含的维度的集合,1≤i≤j≤m,包含的维度个数为k=j-i+1,F同样是针对度量集合M的幂集合的聚合函数,CubeBy(R,β,F)计算产生包含2k个Cuboid的Cube。
Cube只是对MOLAP的一种形象描述,因为空间中的立方体都是三维的,而多维模型则不局限于三维,可以根据实际需求包含更多维度。之所以描述成立方体,一方面是出于更方便地解释该数据模型,同时这种形象的表达方式也方便理解。另一方面则是为了能够和关系型数据库中的二维表进行有效地区分,确定了具体的维度值就可以从立方体中获取到对应的度量。要对海量数据进行OLAP分析,无论是基于关系型数据库的ROLAP(RelationalOnline analytical processing)还是基于OLAP都会面临很大问题。前者需要根据分析人员的需求在关系型数据库上进行实时计算,如果涉及到的数据总量或者聚合运算过多,查询的响应速度将会非常慢,而且会给数据库带来巨大的压力。而后者通过对原始数据进行预计算生成Cube以加速查询的思路在海量数据面前也受到了极大的挑战,因为在原始数据特别大的情况下,生成的Cube也会特别大,如果数据模型的维度过多更是会出现维度灾难。因此,本发明提供了一种多维计算方法用以解决上述的问题,所述计算方法的执行流程如图1所示,包括步骤:
S101、在接收到对待分析数据的分析请求时,获取所述分析请求中的各个分析维度;
本发明实施例中,所述待分析数据由初始分析维度和初始度量组成,优选的,以Cube形式存在,其中,Cube所面临的一个很大的问题就是增量数据处理,要分析的数据通常都是随时间不断增长的,如何让Cube的数据跟上所述待分析数据的增长是MOLAP技术应用的关键性问题之一。由于新型MOLAP框架面向海量数据,所以数据总量往往都很大,而且增长频率很快,比如销售数据,每天一更新甚至几分钟一更新都有可能,如果每次有数据变化就直接进行Cube的全量计算是不可取也是不现实的,所以必须要实现Cube的增量计算和存储,即当有新数据加入时,只需要对新数据进行预计算而不必要进行总体的重新预计算。本文采用Cube分段的方式给Cube预计算设计了如下增量预计算机制:每个Cube由一个或多个Cube段组成,每个Cube段记录了所包含数据的起止时间,前一个Cube段的结束时间是后一个Cube段的起始时间,保证数据的唯一性和连贯性。每当有新增数据,只需要从最后一个Cube段的结束时间开始构建一个新的Cube段而不需要重新构建,逻辑层面仍然只有一个Cube。当用户进行数据查询时,查询引擎解析语句逻辑,获取所述分析请求所涉待分析数据,充分利用非关系型数据特性,快速返回查询结果,处理过程对用户透明。优选的,Cube中的Cube段数目到达一定数量后进行在线的异步合并,以防止查询效率下降。
所述分析请求由用户通过具体的情况进行确定,所述分析请求中包含有分析维度,所述分析维度包含于所述初始分析维度中,解析所述分析请求,在预设的位置获取所述分析请求的各个分析维度。
S102、依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析分析数据;
本发明实施例中,依据所述各个分析维度,对所述待分析数据进行筛选,将所述待分析数据中与所述分析请求无关的数据进行删除处理,得到所述目标待分析数据,筛选的目的是为了减少数据处理量,提高所述分析请求的处理效率。
S103、将所述目标待分析数据依进行分块,得到各个分块数据;
本发明实施例中,分块的目的是为了减少每次计算的计算量,其中,分块的过程主要包括切片和切块两部分,切片和切块属于投影和选择操作,基于一部分维度和对应的维度值来进行分析。如果选择分属于不同维度的特定维度值进行分析是切片,若选择的维度值中包含同一维度内的维度值区间或是维度值组合则是切块。切片和切块就是选定需要进行分析的维度范围来查看对应的度量值。具体的分块过程如下:将所述目标待分析数据依据维度值进行分片,得到各个分片;将所述各个分片依据预设的维度范围进行分块,得到各个分块数据。
进一步的,针对所述分块数据依据具体的情况还可以对对其进行旋转,其中,旋转指维度的位置的互换,即重新安排维度相对位置。
S104、依据所述分析请求对所述各个分块数据进行处理,得到各个分块计算结果;
本发明实施例中,依据具体的分析请求对所述各个分块数据进行处理,得到各个分块结果,本发明实施例中,对具体的处理过程不进行限定,其中,为例提高数据的处理效率,针对所述各个分块数据可以采用并行的方式进行处理,具体同时并行计算几个分块数据,可以依据服务器的处理能力和具体情况进行处理。
S105、依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果。
本发明实施例中,预先为每一个分析维度分配分析标识,在对每一个分块数据进行处理中,依据其中包含的分析维度为每一个分析维度的计算结果分配结果标识,例如:当前分块数据中包含A和B两个分析维度,将针对A分析维度的计算结果和针对B分析维度的计算结果分别分配结果标识,优选的,A分析维度的结果标识与其对应的分配标识相同,B分析维度对应的结果标识与其对应的分配标识相同。因此,将所述各个分块计算结果中结果标识相同的分块计算结果进行整合,得到各个计算结果,其中,整合的过程与所述分析请求有关,可以为求和,取平均,确定极值等。获取所述各个分析维度的分析标识,针对每一个计算结果在各个分析标识中查找与其对应的结果标识相同的目标分析标识,将所述目标分析标识对应的分析维度作为目标分析维度,将该计算结果作为所述目标分析维度的目标计算结果。针对S104和S105软件执行过程如下:
算法输入:目标待分析数据
算法输出:预计算的Cube
算法描述:
(1)将原始数据分块后分配给各Mapper。
(2)每个Mapper根据分配到的数据块计算出局部基本Cuboid(N维
Cuboid),Cuboids[N]。
(3)对于每个Mapper分层计算得到局部Cube:
for i=N-1to 0 do:
Cuboids[i]=calculate Next LevelInLocal(Cuboids[i+1]);
end for
(4)Reducer对各局部Cube进行合并,得到完整Cube
本发明公开了一种多维计算方法,包括:在接收到对待分析数据的分析请求时,获取所述分析请求中的各个分析维度;依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析分析数据;将所述目标待分析数据依进行分块,得到各个分块数据;依据所述分析请求对所述各个分块数据进行处理,得到各个分块计算结果;依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果。上述的计算方法,将所述待分析数据进行分块后,针对每一个分块进行处理,计算量不会随着维度的增加成指数增长,减少了计算量,提高了计算的速度。
本发明实施例中,依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析分析数据的处理流程如图2所示,包括步骤:
S201、获取所述待分数据中包含的各个初始分析维度;
本发明实施例中,所述待分析数据中包含的各个初始分析维度的确定过程如下:一个N维全量Cube有2^N个Cuboid,例如:总维度为ABC的Cube,由A,B,C,AB,AC,BC,ABC一共7个Cuboid组成。其中,每一个初始分析维度可以对应一个物化视图,物化视图是为了加速查询,显然所述物化视图只有查询所用到才有意义,否则就只是浪费空间。对于实际的查询分析需求,往往只会用到全量Cube中的一部分,而一个物化视图被用得越多说明它的价值越大,物化视图的选择包括如下三种情况:将存储空间作为约束条件;将物化视图的总体维护时间成本作为约束条件;是利用增量重计算视图选择算法和增量策略物化后代视图选择算法来减少视图选择的搜索空间和对多查询(Multi-Query)进行优化。
S202、将所述各个初始分析维度中与所述各个分析维度不存在关联关系的初始分析维度作为目标初始分析维度;
本发明实施例中,针对每一个分析维度,将其与所述各个分析维度进行对比,确定两者是否存在关联关系,其中,所述关联关系可以包含关系、对等关系等,将所述各个初始分析维度中与所述各个分析维度不存在关联关系的初始分析维度作为目标初始分析维度。
S203、删除所述待分析数据中与所述目标初始分析维度对应的数据,得到所述目标待分析数据。
本发明实施例中,获取所述待分数据中与所述目标初始分析维度对应的数据,对该数据进行删除处理,得到所述目标待分析数据。
本发明实施例中,针对上述的多维计算方法进行举例说明,具体的执行流程如下:
(1)从Hive或者Sqoop创建临时平表存入Hive。该临时平表作为后面步骤的带分析数据,Cube预计算完成后删除。
(2)基于平表统计保存各维度去重后的值用于构建字典,并收集保存各Cuboid的统计信息。
(3)创建并保存字典,用于维度值在HBase中的压缩存储。
(4)计算Cube,框架自动选择要采用的预计算算法进行Cube计算。
当前一般性解决方案是采用整体逐层算法
整体逐层算法,核心是依次将每一层的Cuboid看成一个整体逐层计算下一层Cuboid,把实际计算过程中的分块、排序、洗牌等分布式计算的复杂操作交给分布式计算框架完成,充分利用分布式计算框架的计算能力,自行编写的代码相对简单稳定。
整体逐层预计算算法充分利用了Spark计算框架的能力,计算流程中相对复杂的排序和洗牌等工作直接交给框架处理而不需要手动编程实现,因此只需要实现相对较少的简洁代码,便于理解且易于维护。而且由于自行编写的代码逻辑简单明确,该算法对有着很好的适应性和稳定性,对分布式集群的要求较低。经过多次实验很少有出错的情况,即便Spark集群使用率很高,任务也能顺利完成,较高的稳定性对于在生产环境中的应用尤为重要。但该算法也有比较明显的缺点,最主要的就是对HDFS的读写操作较多:由于是整体逐层计算,每一层计算的输入都是上一层输出的完整Cube,在这个过程中将每一层都看成了一个整体,即便是Spark可以很好地利用内存,但是预计算Cuboid时每层的巨大的空间占用很多情况下仍然需要写HDFS。总的来说该算法是一个性能比较一般但是稳定性很高的预计算算法,适合在对稳定性要求高或者集群资源有限的场景中。
本发明实施例中,采用分块逐层算法,所述分块逐层预计算算法则是一种自顶向下的预计算算法,和整体逐层预计算算法最大的不同就是它并不是将输入数据看成一个整体进行迭代运算,而是将整体数据分块,分配给各个Mapper,每个Mapper首先内部计算出基于自己数据块的包含所有层次Cuboid的局部Cube。而Reducer则负责对Mapper生成的局部Cube进行合并以得到完整Cube。
通过将维度分化,降低维度的2^N次方的复杂度,为了应对维度灾难,需要有一些关于预计算数据选择的Cube优化策略,也就是物化视图选择。总的来说,针对维度灾难的维度优化所关心的就是在基本不影响查询性能的前提下减少预计算的维度组合的数量。
实现主要spark代码段,逐层计算算法计算过程:
(1)将中间表转化成RDD,并通过mapToPair结合字典模块编码成<ByteArray,Object[]>类型的初始RDD。
FinalJavaPairRDD<ByteArray,Object[]>initialRDD=intermediateTable.javaRDD().mapToPair(new PairFunction<Row,ByteArray,Object[]>(){····})
(2)将encodedInitialRDD通过mapToPair和reduceByKey计算出基本Cuboid包含的维度度量的键值对组合,并通过persist进行持久化,并将基本Cuboid数据存储到HDFS中。该步骤中persist采用的level为MEMORY_AND_DISK_SER,即做持久化时优先使用内存,如果内存不足会利用磁盘进行缓存。
int partitionNum=estimatePartitionNum(0,cubeStatistic);
allLevelRDDs[0]=initialRDD.reduceByKey(baseReducer,partitionNum).persist(level);
(3)从基本Cuboid开始循环,依次计算N-1,N-2,···,0维的Cuboid,每一轮都读取上一轮持久化的结果进行计算,将本轮结果存入HDFS,并且将结果通过persist进行持久化以方便下一轮计算使用,同时将上一轮持久化的结果清除。其中CuboidMap类定义了具体的FlatMap函数,用来指导执行每轮计算的flatMapToPair,
它利用scheduler.getCuboid(cuboidID)来获取某个Cuboid经过剪枝策略后的子Cuboid ID集合并计算Cuboid。
PairFlatMapFunction<Tuple2<ByteArray,Object[]>,ByteArray,Object[]>flatMap=new
CuboidMap(builder,scheduler,segment,cube);
for(level=1;level<=allLevels;level++){
partitionNum=estimatePartitionNum(level,cubeStatistic);
allLevelRDDs[level]=allLevelRDDs[level-1].flatMapToPair(flatMap)
.reduceByKey(allLevelReducer,partitionNum).persist(level);
saveToHDFS(allLevelRDDs[level],cube,path,level);
allLevelRDDs[level-1].unpersist();
}
allLevelRDDs[allLevels-1].unpersist();
在以上的计算过程完成后,HDFS上就存有了各维度组合所有需要计算的sequencefile格式的Cuboid文件,在经过后面的步骤转化成HFile通过bulkload导入HBase。
基于Spark的分块逐层预计算算法的主要步骤如下:
(1)将输入的行数据转化成RDD,用于后面的HyperLogLog取样以确定Cuboid的分布,以及后续Cuboid的具体计算。
finalJavaRDD<List<String>>rowRDD=intermediateTable.javaRDD()
.map(new Function<Row,List<String>>(){
public List<String>call(Row row)throws Exception{
}});
(2)通过取样计算HBase的region拆分并建HBase表。
final Map<Long,HyperLogLogCounter>sampling=doSampling(rowRDD,cube,segment);
final byte[][]splitKeys=createHTable(cube,segment,sampling);
(3)利用多线程构建并输出Cuboid数据生成HFile文件。
finalString hfile=build(splitKeys,rowRDD,cube,segment);
build函数中主要的Cube计算代码如下:
PairFlatMapFunction map=new PairFlatMapFunction<Iterator<List<List<String>>>,byte[],
byte[]>(){
@Override
public Iterable<Tuple2<byte[],byte[]>>call(Iterator<List<List<String>>>iterator){
LinkedBlockingQueue<List<String>>queue=new LinkedBlockingQueue();
bySplitBuilder builder=new BySplitBuilder(cubeInstance,dictionary);
ExecutorService threadPool=Executors.newCachedThreadPool();
threadPool.submit(builder.buildAsRunnable(blockingQueue,cuboidOutput));
while(iterator.hasNext())
for(List<String>row:iterator.next())queue.put(row);
queue.put(Collections.<String>emptyList());
return cuboidOutput.result();
}
};
finalJavaPairRDD<byte[],byte[]>pairRDD=javaRDD.glom().mapPartitionsToPair(map);
//附属重要类:
private void build(BlockingQueue<List<String>>input,cuboidOutputoutput){
//创建用来并行计算Cuboid的多个线程
taskThreads=generateTaskThreads();
//构建基本Cuboid,即包含所有维度的Cuboid。
baseCuboid=createBaseCuboid(input);
if(baseCuboid.rows==0)
return;
//构建其它Cuboid
addChildTasks(baseCuboid);
start(taskThreads);
join(taskThreads);
}
RDD的glom函数将每个partition中类型为T的元素转换成Array[T],在这里也就是将每个分区中的所有List<String>元素合并成一个List<List<String>>元素,然后利用mapPartitionsToPair进行计算,这样就相当于根据按照Partition分成了多个子任务进行运算。
该算法使用了阻塞队列来实现多线程的同步,同时用newCachedThreadPool作为线程池来计算,将阻塞队列作为输入cuboidOutput作为输出提交给计算线程。
每次listIterator.next()都对应着一行,也就是一个List<String>元素,把所有的List<String>元素都添加到阻塞队列中,线程池中线程就从阻塞队列中取元素进行计算。计算完成后调用cuboidOutput.result()可以得到计算结果,对RDD进行更新。
(5)在HBase中创建Htable,将Cube的计算结果转成HFile后加载到创建的HTable中。因为计算得到的Cube是以SequenceFile的格式存储在HDFS上的,所以需要首先进行转换才能导入HBase。
(6)存储Cube结果:Cube是由Cuboid组成的,一个Cuboid包含特定维度度量组合的数据条目,因此每一个Cuboid里的条目主要由所包含的维度和度量组成,分别为(D1,D2,···,DX)和(M1,M2,···,MY),其中Di和Mj为具体的维度值和度量值,根Cuboid的数据特点和HBase列存储特性,设计了以下HBase存储模式:
行键:Cuboid ID和维度组合的拼接。
列族:所有的度量组成列族,包含度量组合。
每个增量Cube段都由单独的一个HBase表保存。由于为了实现Cube的增量计算引入了Cube段的概念,因此Cube在HBase里也要实现分段。考虑到查询和写入性能,采用了分表存储Cube段的模式.
本发明实施例中,上述的方法中契合Spark框架的计算模型。由于面对的是海量数据而且涉及到分布式计算,只有适合计算框架的算法才能达到比较好的效果,否则会出现浪费计算资源或者计算效率低下的情况。预计算Cube作为查询分析功能正常使用的前提,需要有足够高的稳定性以保证用户的正常使用。对不同类型的原始数据集适应性较好。不同业务所产生的数据有不同的特点,数据分布情况差异很大,要保证框架的通用性需要能够应对各种不同特点的数据集,如果一个算法不能实现这一点,那么就根据数据特定设计适应不同的算法,按需选择。对计算资源的消耗和计算性能相对平衡。Cube预计算算法的主要设计目标是达到尽可能高的性能,但对计算资源的消耗也要在合理范围内,因为实际生产环境中的计算资源是有限且珍贵的。避免产生维度灾难
本发明实施例中,分块逐层算法是对逐层算法的优化和进阶,分块逐层预计算算法的主要思想就是充分利用各Mapper的CPU和内存,为了实现该目的需要自行编码实现每个Mapper上的局部计算。该算法只需要一轮MapReduce任务就可以完成整个Cube的计算,为了减小内存占用和避免重复计算,该算法采用DFS(深度优先遍历)来遍历子局部Cuboid生成树,Mapper会按DFS的顺序来计算分配到的数据块上的所有Cuboid。DFS是一个递归方法,在整个过程中会把父Cuboid暂时压栈后遍历计算子Cuboid,依次深入到某Cuboid没有子Cuboid时才出栈并输出,从栈中取下一个元素计算直到栈为空,整个过程中暂存的Cuboid数不超N个,通过DFS算法的遍历过程,和Cube优化思想的整合,既降低了维度的指数型组合,又充分利用了分布式计算的本地计算能力,使得分布式多维度分析计算能力大大提高。
基于上述的一种多维计算方法,本发明实施例中,还提供了一种多维计算装置,所述多维计算装置的结构框图如图3所示,包括:
维度获取模块301、筛选模块302、分块模块303、处理模块304和整合模块305。
其中,
所述维度获取模块301,用于在接收到对待分析数据的分析请求时,获取所述分析请求中的各个分析维度;
所述筛选模块302,用于依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析分析数据;
所述分块模块303,用于将所述目标待分析数据依进行分块,得到各个分块数据;
所述处理模块304,用于依据所述分析请求对所述各个分块数据进行处理,得到各个分块计算结果;
所述整合模块305,用于依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果。
本发明公开了一种多维计算装置,包括:在接收到对待分析数据的分析请求时,获取所述分析请求中的各个分析维度;依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析分析数据;将所述目标待分析数据依进行分块,得到各个分块数据;依据所述分析请求对所述各个分块数据进行处理,得到各个分块计算结果;依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果。上述的计算装置,将所述待分析数据进行分块后,针对每一个分块进行处理,计算量不会随着维度的增加成指数增长,减少了计算量,提高了计算的速度。
本发明实施例中,所述筛选模块301包括:
初始分析维度获取单元305、第一确定单元306和删除单元307。
其中,
所述初始分析维度获取单元305,用于获取所述待分数据中包含的各个初始分析维度;
所述第一确定单元306,用于将所述各个初始分析维度中与所述各个分析维度不存在关联关系的初始分析维度作为目标初始分析维度;
所述删除单元307,用于删除所述待分析数据中与所述目标初始分析维度对应的数据,得到所述目标待分析数据。
本发明实施例中,所述分块模块303包括:
分片单元308和分块单元309。
其中,
所述分片单元308,用于将所述目标待分析数据依据维度值进行分片,得到各个分片;
所述分块单元309,用于将所述各个分片依据预设的维度范围进行分块,得到各个分块数据。
本发明实施例中,所述整合模块305包括:
整合单元310、分析标识获取单元311和第二确定单元312。
其中,
所述整合单元310,用于将所述各个分块计算结果中结果标识相同的分块计算结果进行整合,得到各个计算结果
所述分析标识获取单元311,用于获取所述各个分析维度的分析标识;
所述第二确定单元312,用于针对每一个计算结果在各个分析标识中查找与其对应的结果标识相同的目标分析标识,将所述目标分析标识对应的分析维度作为目标分析维度,将该计算结果作为所述目标分析维度的目标计算结果。
本发明实施例中,所述待分析数据由Cube组成,所述Cube中包含至少一个Cube段,每一个Cube段包含数据的起止时间,还包括:
时间获取模块313和构建模块314。
其中,
所述时间获取模块313,用于当检测到新增数据请求时,获取所述待分析数据中最后一个Cube的结束时间;
所述构建模块314,用于将所述结束时间作为起始时间构建新增Cube,将所述新增数据存储到所述新增Cube。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明所提供的一种多维计算方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (6)

1.一种多维计算方法,其特征在于,包括:
在接收到对待分析数据的分析请求时,获取所述分析请求中的各个分析维度;
依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析数据;
将所述目标待分析数据进行分块,得到各个分块数据;
依据所述分析请求对所述各个分块数据进行处理,得到各个分块计算结果;
依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果;
其中,依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析数据,包括:
获取所述待分析数据中包含的各个初始分析维度;
将所述各个初始分析维度中与所述各个分析维度不存在关联关系的初始分析维度作为目标初始分析维度;
删除所述待分析数据中与所述目标初始分析维度对应的数据,得到所述目标待分析数据;
其中,将所述目标待分析数据依进行分块,得到各个分块数据,包括:
将所述目标待分析数据依据维度值进行分片,得到各个分片;
将所述各个分片依据预设的维度范围进行分块,得到各个分块数据。
2.根据权利要求1所述的方法,其特征在于,依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果,包括:
将所述各个分块计算结果中结果标识相同的分块计算结果进行整合,得到各个计算结果
获取所述各个分析维度的分析标识;
针对每一个计算结果在各个分析标识中查找与其对应的结果标识相同的目标分析标识,将所述目标分析标识对应的分析维度作为目标分析维度,将该计算结果作为所述目标分析维度的目标计算结果。
3.根据权利要求1所述的方法,其特征在于,所述待分析数据由Cube组成,所述Cube中包含至少一个Cube段,每一个Cube段包含数据的起止时间,还包括:
当检测到新增数据请求时,获取所述待分析数据中最后一个Cube的结束时间;
将所述结束时间作为起始时间构建新增Cube,将所述新增数据存储到所述新增Cube。
4.一种多维计算装置,其特征在于,包括:
维度获取模块,用于在接收到对待分析数据的分析请求时,获取所述分析请求中的各个分析维度;
筛选模块,用于依据所述各个分析维度,对所述待分析数据进行筛选,得到目标待分析数据;
分块模块,用于将所述目标待分析数据进行分块,得到各个分块数据;
处理模块,用于依据所述分析请求对所述各个分块数据进行处理,得到各个分块计算结果;
整合模块,用于依据所述各个分析维度,对所述各个分块计算结果进行整合,得到目标计算结果;
其中,所述筛选模块包括:
初始分析维度获取单元,用于获取所述待分析数据中包含的各个初始分析维度;
第一确定单元,用于将所述各个初始分析维度中与所述各个分析维度不存在关联关系的初始分析维度作为目标初始分析维度;
删除单元,用于删除所述待分析数据中与所述目标初始分析维度对应的数据,得到所述目标待分析数据;
其中,所述分块模块包括:
分片单元,用于将所述目标待分析数据依据维度值进行分片,得到各个分片;
分块单元,用于将所述各个分片依据预设的维度范围进行分块,得到各个分块数据。
5.根据权利要求4所述的装置,其特征在于,所述整合模块包括:
整合单元,用于将所述各个分块计算结果中结果标识相同的分块计算结果进行整合,得到各个计算结果
分析标识获取单元,用于获取所述各个分析维度的分析标识;
第二确定单元,用于针对每一个计算结果在各个分析标识中查找与其对应的结果标识相同的目标分析标识,将所述目标分析标识对应的分析维度作为目标分析维度,将该计算结果作为所述目标分析维度的目标计算结果。
6.根据权利要求4所述的装置,其特征在于,所述待分析数据由Cube组成,所述Cube中包含至少一个Cube段,每一个Cube段包含数据的起止时间,还包括:
时间获取模块,用于当检测到新增数据请求时,获取所述待分析数据中最后一个Cube的结束时间;
构建模块,用于将所述结束时间作为起始时间构建新增Cube,将所述新增数据存储到所述新增Cube。
CN201911249227.9A 2019-12-09 2019-12-09 一种多维计算方法及装置 Active CN111026817B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911249227.9A CN111026817B (zh) 2019-12-09 2019-12-09 一种多维计算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911249227.9A CN111026817B (zh) 2019-12-09 2019-12-09 一种多维计算方法及装置

Publications (2)

Publication Number Publication Date
CN111026817A CN111026817A (zh) 2020-04-17
CN111026817B true CN111026817B (zh) 2023-11-28

Family

ID=70205248

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911249227.9A Active CN111026817B (zh) 2019-12-09 2019-12-09 一种多维计算方法及装置

Country Status (1)

Country Link
CN (1) CN111026817B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112287226A (zh) * 2020-10-29 2021-01-29 四川长虹电器股份有限公司 基于大数据的用户画像方法

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1551015A (zh) * 2003-03-28 2004-12-01 微软公司 简化分析试探法的空间模型的系统、方法和装置
CN101197876A (zh) * 2006-12-06 2008-06-11 中兴通讯股份有限公司 一种对消息类业务数据进行多维分析的方法和系统
WO2010122429A2 (en) * 2009-04-20 2010-10-28 Master Wave International Co., Ltd. Image-based data management method and system
CN103838709A (zh) * 2014-03-05 2014-06-04 天闻数媒科技(北京)有限公司 排版方法和排版引擎
CN104809130A (zh) * 2014-01-27 2015-07-29 腾讯科技(深圳)有限公司 数据查询的方法、设备及系统
CN106959960A (zh) * 2016-01-11 2017-07-18 杭州海康威视数字技术股份有限公司 数据获取方法及装置
CN107533569A (zh) * 2015-10-23 2018-01-02 甲骨文国际公司 用于多维数据库环境中的沙箱支持的系统和方法
CN107992503A (zh) * 2016-10-26 2018-05-04 微软技术许可有限责任公司 数据分析中的查询处理
CN108140024A (zh) * 2015-07-07 2018-06-08 华为技术有限公司 Molap中合并索引结构并保持查询一致性的机制
CN108196850A (zh) * 2018-01-29 2018-06-22 上海法顿印刷有限公司 一种应用于可变信息印刷的自动数据处理与拼版方法
CN109828993A (zh) * 2017-08-31 2019-05-31 北京国双科技有限公司 一种统计数据的查询方法及装置
CN110032591A (zh) * 2018-12-28 2019-07-19 国网浙江省电力有限公司信息通信分公司 一种资产大数据智能分析方法
CN110083627A (zh) * 2019-04-28 2019-08-02 江苏满运软件科技有限公司 数据处理方法、系统、计算机设备和存储介质
CN110222029A (zh) * 2019-05-09 2019-09-10 国网上海市电力公司 一种大数据多维分析计算效率提升方法及系统
CN110442653A (zh) * 2019-07-03 2019-11-12 平安科技(深圳)有限公司 增量构建cube模型的方法、装置、服务器及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020029207A1 (en) * 2000-02-28 2002-03-07 Hyperroll, Inc. Data aggregation server for managing a multi-dimensional database and database management system having data aggregation server integrated therein

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1551015A (zh) * 2003-03-28 2004-12-01 微软公司 简化分析试探法的空间模型的系统、方法和装置
CN101197876A (zh) * 2006-12-06 2008-06-11 中兴通讯股份有限公司 一种对消息类业务数据进行多维分析的方法和系统
WO2010122429A2 (en) * 2009-04-20 2010-10-28 Master Wave International Co., Ltd. Image-based data management method and system
CN104809130A (zh) * 2014-01-27 2015-07-29 腾讯科技(深圳)有限公司 数据查询的方法、设备及系统
CN103838709A (zh) * 2014-03-05 2014-06-04 天闻数媒科技(北京)有限公司 排版方法和排版引擎
CN108140024A (zh) * 2015-07-07 2018-06-08 华为技术有限公司 Molap中合并索引结构并保持查询一致性的机制
CN107533569A (zh) * 2015-10-23 2018-01-02 甲骨文国际公司 用于多维数据库环境中的沙箱支持的系统和方法
CN106959960A (zh) * 2016-01-11 2017-07-18 杭州海康威视数字技术股份有限公司 数据获取方法及装置
CN107992503A (zh) * 2016-10-26 2018-05-04 微软技术许可有限责任公司 数据分析中的查询处理
CN109828993A (zh) * 2017-08-31 2019-05-31 北京国双科技有限公司 一种统计数据的查询方法及装置
CN108196850A (zh) * 2018-01-29 2018-06-22 上海法顿印刷有限公司 一种应用于可变信息印刷的自动数据处理与拼版方法
CN110032591A (zh) * 2018-12-28 2019-07-19 国网浙江省电力有限公司信息通信分公司 一种资产大数据智能分析方法
CN110083627A (zh) * 2019-04-28 2019-08-02 江苏满运软件科技有限公司 数据处理方法、系统、计算机设备和存储介质
CN110222029A (zh) * 2019-05-09 2019-09-10 国网上海市电力公司 一种大数据多维分析计算效率提升方法及系统
CN110442653A (zh) * 2019-07-03 2019-11-12 平安科技(深圳)有限公司 增量构建cube模型的方法、装置、服务器及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
余鹏.LE-OLAP中多维数据模型及聚合算法的研究.《中国优秀硕士学位论文全文数据库》.2011,第2-4章. *

Also Published As

Publication number Publication date
CN111026817A (zh) 2020-04-17

Similar Documents

Publication Publication Date Title
CN108292315B (zh) 储存和检索数据立方体中的数据
US10657116B2 (en) Create table for exchange
US20120323867A1 (en) Systems and methods for querying column oriented databases
EP3014488B1 (en) Incremental maintenance of range-partitioned statistics for query optimization
US20150220600A1 (en) Efficient set operation execution using a single group-by operation
Soroush et al. Time travel in a scientific array database
Ntarmos et al. Rank join queries in nosql databases
CN107515899B (zh) 数据库联合分片方法、装置以及存储介质
US10977280B2 (en) Systems and methods for memory optimization interest-driven business intelligence systems
CN113032427B (zh) 一种用于cpu和gpu平台的向量化查询处理方法
CN102890678A (zh) 一种基于格雷编码的分布式数据布局方法及查询方法
CN113868230B (zh) 一种基于Spark计算框架的大表连接优化方法
Jiang et al. Cohort query processing
Whitman et al. Spatio-temporal join on apache spark
Chambi et al. Optimizing druid with roaring bitmaps
EP4334824A2 (en) Storage engine for hybrid data processing
CN111026817B (zh) 一种多维计算方法及装置
EP4033373A1 (en) Methods and systems for undetermined query analytics
Kvet Relational data index consolidation
CN115114294A (zh) 数据库存储模式的自适应方法、装置、计算机设备
CN110597929A (zh) 一种基于MapReduce的并行数据立方构建方法
Tang et al. Parallel query service for object-centric data management systems
Kvet Database Block Management using Master Index
CN112269797A (zh) 一种卫星遥感数据在异构计算平台上的多维查询方法
Anupama et al. A Comprehensive Review on Data Partitioning and Sampling Techniques for Processing Big Data

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