具体实施方式
下面将结合本实施例中的附图,对本实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于对下述各实施例进行介绍,首先对本发明实施例所涉及的网络架构进行简要介绍。
如图3所示,数据库的网络架构包括控制服务器31和计算服务器32。其中,对于分布式数据系统而言,所述计算服务器32还可以是由多个子服务器组成的计算服务器集群。在图3中,控制服务器31用于对流水队列进行扫描,从队首依次读取数据分析任务,然后将获取的数据分析任务提交给计算服务器32。计算服务器32接收到数据分析任务后,获取对应该数据分析任务的流水文件,所述流水文件中包含多条用户上网行为产生的流水数据。计算服务器32根据这些流水数据进行预处理操作、去重计算以及累加计算,得到相应的指标量结果,然后向控制服务器31返回用于标识处理成功的数据分析状态标识;如果计算失败,未得到相应的指标量结果。则计算服务器32向控制服务器31返回用于标识处理失败的数据分析状态标识。控制服务器31接收到计算服务器32发送的数据分析状态标识后,从流水队列中读取下一个数据分析任务提交给计算服务器32。
下面,基于图3所示的系统,对本实施例中数据分析的方法进行说明,所述方法应用于计算服务器32侧,如图4所示,所述方法包括:
401、从流水数据集合中逐条读取流水数据。
本实施例中,所述流水数据集合即为前述流水文件。通常,对应不同的预设指标量计算服务器会基于不同的流水文件进行计算。所述预设指标量是由运营商提供给数据分析系统的、用于表达运营商数据分析诉求的变量,例如可以是“当前在线活跃人数”、“平均用户在线时长”等变量。计算服务器按照运营商的需求,根据不同的流水文件计算不同的指标量,得到相应的指标量结果,例如“当前在线活跃人数”为120000人,“平均用户在线时长”为2小时等。在实际应用中,计算服务器可以根据一个流水文件计算一个指标量,也可以根据一个流水文件计算多个指标量,当计算完一个指标量后,计算服务器接收控制服务器提交的下一个数据分析任务,基于相同或不同的流水文件对下一个指标量进行计算。
一条流水数据用于描述一个特定用户的一次上网操作行为,用户的操作行为通常包含多个不同角度上的描述信息(后续称为属性值),因此一条流水数据通常包含多个维度的属性值。事例性的,如表1所示:
用户ID |
应用ID |
用户性别 |
用户年龄 |
操作起始时刻 |
A |
1 |
0 |
23 |
12:37 |
B |
3 |
1 |
15 |
20:04 |
表1
表1中包含两条流水数据,每一条流水数据都有“用户ID”、“应用ID”、“用户性别”、“用户年龄”以及“操作起始时刻”五个维度的属性值。其中,“用户ID”可以为QQ号/手机号/邮箱等能够对用户进行唯一标识的数据信息;“应用ID”为对不同应用进行唯一标识的数据信息,类似的,流水数据中还可以包含“SNS网站ID”;“用户性别”维度中,通过字节“1”代表男性,通过字节“0”代表女性。
对于关系型数据库,服务器通过多张关系型数据表将流水数据的多个维度的属性值进行关联保存,例如建立一张维度1和维度2的关系表,然后建立一张维度2和维度3的关系表。对于立方体数据库,如图2所示,服务器从多个维度对流水数据进行保存。不论关系型数据库还是立方体数据库,均涉及多维度的流水数据。
流水文件中通常包含有成千上万条流水数据,例如,计算服务器获取某SNS网站当前在线用户的行为数据,若当前时刻上有8600个用户同时在线,则计算服务器能够获取到8600条流水数据。再例如,计算服务器获取某SNS游戏应用在某一特定时间段内进行游戏的用户的行为数据,若在该特定时间段内有5400人次进行过该游戏,则计算服务器能够获取到5400条流水数据。与上一例不同的时,一般情况下通常会存在同一个用户在不同时刻上多次进行某一游戏的情况,该5400条流水数据包含同一用户在不同时刻上多次上网操作产生的多条流水数据,如前所述,一条流水数据用于描述一个特定用户的一次上网操作行为,因此在计算某些指标量例如某时间段的在线活跃人数(而非某时间段的在线活跃人次)时,需要对部分流水数据进行去重处理,否则计算出的指标量结果会产生误差。
402、根据预设维度中的属性值对读取的流水数据进行归一化排序。
为节省后续的计算量,在对流水数据进行去重和累加计算前,服务器对流水数据进行预处理操作。所述预处理操作包括对读取的流水数据进行归一化排序,即根据预设维度中的属性值将预设为度属性值相同的流水数据进行相邻排序。
所述预设维度为流水数据中的某个维度,对于不同的指标量,计算服务器选取不同的维度作为预设维度。例如,对于计算指标量“当前在线活跃人数”,计算服务器选择维度“用户ID”作为预设维度。具体的,计算服务器按照操作时间顺序依次读取的三个用户的7条流水数据如表2所示:
用户ID |
应用ID |
用户性别 |
用户年龄 |
A |
1 |
0 |
23 |
B |
2 |
1 |
14 |
B |
3 |
1 |
14 |
C |
3 |
0 |
51 |
A |
1 |
0 |
23 |
B |
1 |
1 |
14 |
C |
3 |
0 |
51 |
表2
计算服务器以维度“用户ID”中的属性值对表2所示的流水数据进行归一化排序后产生的流水数据列表如表3所示:
用户ID |
应用ID |
用户性别 |
用户年龄 |
A |
1 |
0 |
23 |
A |
1 |
0 |
23 |
B |
2 |
1 |
14 |
B |
3 |
1 |
14 |
B |
1 |
1 |
14 |
C |
3 |
0 |
51 |
C |
3 |
0 |
51 |
表3
403、对归一化排序后的流水数据逐条提取属性值条目,获得属性值条目列表。
进行归一化排序后,计算服务器依次从每一条流水数据中提取一条属性值条目,获得包含多条属性值条目的属性值条目列表。以表3中第一条流水数据为例,计算服务器提取的属性值条目为“A,1,0,23”,即依次提取用户A对应“用户ID”、“应用ID”、“用户性别”以及“用户年龄”四个维度的属性值。对于表3中的7条流水数据,计算服务器获得的属性值条目列表如表4所示:
A,1,0,23 |
A,1,0,23 |
B,2,1,14 |
B,3,1,14 |
B,1,1,14 |
C,3,0,51 |
C,3,0,51 |
表4
404、通过映射运算对属性值条目列表进行去重计算,得到第一特征值列表。
通过表4可以看出,在计算指标量“当前在线活跃人数”时存在重复的属性条目,例如,第一条属性条目和第二条属性条目为用户A在不同时间进行应用1时产生的操作行为,因此需要对此类相同的属性条目进行去重。去重后得到的第一特征值列表如表5所示:
A,1,0,23 |
B,2,1,14 |
B,3,1,14 |
B,1,1,14 |
C,3,0,51 |
表5
计算服务器根据不同指标量的去重要求对属性条目进行去重。例如,对于表5而言,指标量为每个应用的当前在线活跃人数,因此需要将完全相同的属性条目进行去重。如果指标量为整网的当前在线活跃人数,则对于表5而言需去重的属性条目还包括用户B产生的3条属性条目。本实施例后续以指标量为每个应用的当前在线活跃人数为例进行说明。
405、通过归纳运算对第一特征值列表进行累加计算,得到第二特征值列表。
对于表5所示的第一特征值列表,计算服务器对相同的应用ID进行累加,得到如表6所示的第二特征值列表:
表6
其中,应用1的在线活跃人数由表5中第1行属性条目和第4行属性条目的累加得到,应用3的在线活跃人数由表5中第3行属性条目和第5行属性条目的累加得到。
406、根据第二特征值列表分析得出预设指标量结果。
计算服务器根据表6所示的第二特征值列表可以分析得出每个应用的当前在线人数,分别得到如下表7至表9所示的预设指标量结果:
表7
表8
表9
本实施例提供的数据分析的方法,能够在去重和累加计算之前,对流水数据进行归一化排序,根据归一化排序后的流水数据通过一次mapper运算进行去重计算,然后通过一次reducer运算进行累加计算,由此通过一次mapper&reducer运算得到指标量结果。与现有技术中,通过一次mapper&reducer运算进行去重计算、通过一次mapper&reducer运算进行累加计算相比,可以减少mapper&reducer运算的级联次数时,大幅降低计算服务器的计算量,提升指标量的运算速度,提高数据分析系统的运算效率,更加适用于例如立方体数据库等大数据场景。
作为对图4所示方法的详细说明以及进一步扩展,本实施例还提供了一种数据分析的方法,如图5所示,所述方法包括:
501、通过人机交互界面获取运营商提供的预设指标量。
数据分析系统接收运营商输入的预设指标量,本实施例中以计算指标量“当前应用在线活跃人数”为例进行说明。
可选的,数据分析系统可以接收一个预设指标量,也可以接收多个预设指标量。当接收到多个预设指标量时,将多个预设指标量进行优先级排序,然后按照优先级由高到低的顺序将多个预设指标量依次进行计算。
在进行优先级排序时,可以但不限于根据下述至少一种指标量参数对多个预设指标量进行优先级排序:预设指标量涉及的计算量、预设指标量对于用户或运营商的重要程度或者预设指标量对于用户或运营商的紧急程度。
502、从流水队列中获取对应预设指标量的流水文件。
在确定需要计算的预设指标量后,从流水队列中调取对应预设指标量的流水文件。
步骤501中在对多个预设指标量进行优先级排序后,根据该排序顺序对各个预设指标量对应的流水文件进行入队,以便在步骤502中可以从流水队列中调取对应当前预设指标量的流水文件。
503、从流水数据集合中逐条读取流水数据。
以计算预设指标量“当前应用在线活跃人数”为例,计算服务器从对应的流水文件中的第一条流水数据开始,依次读取每一条流水数据。
504、对读取的流水数据进行合法性验证。
作为本实施例的一个可选方案,计算服务器在对流水数据进行归一化排序之前,即在执行步骤504之前,可以对流水数据的合法性进行验证。所谓合法流水数据是指可以真实反映用户操作行为的数据,对流水数据进行合法性验证的目的在于,将例如“水军”恶意刷机产生的流水数据剔除,由此保证流水数据的真实性,进而保证预设指标量结果的准确性。
505、将预设维度中属性值相同的多条流水数据进行相邻排序。
计算服务器按照“用户ID”维度的属性值,将表10所示的流水数据进行相邻排序,排序后的流水数据如表11所示,其中表10和表11中的第一行为维度序号:
1 |
2 |
3 |
4 |
用户ID |
应用ID |
用户性别 |
用户年龄 |
A |
1 |
1 |
18 |
A |
2 |
1 |
18 |
B |
3 |
0 |
20 |
A |
3 |
1 |
18 |
A |
1 |
1 |
18 |
表10
1 |
2 |
3 |
4 |
用户ID |
应用ID |
用户性别 |
用户年龄 |
A |
1 |
1 |
18 |
A |
2 |
1 |
18 |
A |
3 |
1 |
18 |
A |
1 |
1 |
18 |
表11
506、针对每一条流水数据,根据至少一个维度组合分别提取至少一条属性值条目。
作为本实施例的一个优选方案,计算服务器可以在一次计算过程中对多个维度组合同时进行计算,其中,每个维度组合由至少一个非预设维度组成。
通常在计算某指标量时,可以从多个维度或多个维度的组合上对该指标量进行计算。例如,对于表11所示的流水数据,可以从“应用ID”这个维度计算指标量“当前应用在线活跃人数”,也可以从“应用ID”+“用户性别”这个维度组合计算指标量“当前应用在线活跃人数”。在现有技术中,数据分析系统对不同维度组合分别进行计算,每次计算时都需要读取流水数据,并单独进行mapper&reducer运算,由此产生的计算量难以估量,对于大数据场景而言,极易产生系统瓶颈。本实施例中数据分析系统可以在一次运算过程中对对应一个指标量的成百上千个维度组合同时进行运算,只需读取一次流水数据,能够大大减少系统的计算量。
具体的,以计算服务器从“应用ID”和“应用ID”+“用户性别”这2个维度组合计算指标量“当前应用在线活跃人数”为例:
计算服务器针对每一个维度组合,从流水数据中分别提取对应该维度组合中每个非预设维度的属性值,获得至少一个属性值。
例如对于表11中的第一条流水数据,计算服务器分别提取维度组合“应用ID”对应的1个属性值“1”(即应用ID的属性值)和维度组合“应用ID”+“用户性别”对应的2个属性值“1,1”(即应用ID的属性值和用户性别的属性值)。
然后,计算服务器将流水数据的预设维度属性值、维度组合的序号以及至少一个属性值组合,获得一条属性值条目。
对于表11中的第一条流水数据,该流水数据对应的预设维度属性值为“A”,所谓维度组合的序号用于在计算多个维度组合时,对维度组合进行区分。维度组合“应用ID”的序号为“11”,维度组合“应用ID”+“用户性别”的序号为“13”,针对维度组合“应用ID”得到的属性值条目如表12第一行所示,针对维度组合“应用ID”+“用户性别”得到的属性值条目如表12第二行所示:
表12
其中,第一行中的“1”为对应维度组合“应用ID”的属性值1,第二行中的“1,1”为分别对应维度组合“应用ID”+“用户性别”的属性值1和1。由此可见,计算服务器可以针对一条流水数据,生成对应多个维度组合的多条属性值条目,由此实现多个维度组合的同时计算。
针对表11中的流水数据,计算服务器获得的属性值条目列表如表13所示:
A,11,1 |
A,11,2 |
A,11,3 |
A,11,1 |
B,11,3 |
A,13,1,1 |
A,13,2,1 |
A,13,3,1 |
A,13,1,1 |
B,13,3,0 |
表13
其中,前5条属性值条目为对应维度组合“应用ID”的属性值条目,后5条属性值条目为对应维度组合“应用ID”+“用户性别”的属性值条目。
507、将对应一条流水数据的至少一条属性值条目进行相邻排序。
与图4中步骤402所述的归一化排序类似,计算服务器根据维度“用户ID”的属性值对表13进行相邻排序,得到如表14所示的属性值条目列表:
A,11,1 |
A,13,1,1 |
A,11,2 |
A,13,2,1 |
A,11,3 |
A,13,3,1 |
A,11,1 |
A,13,1,1 |
B,11,3 |
B,13,3,0 |
表14
作为本实施例的一个替换方案,在步骤506中,计算服务器对每一条流水数据对应的所有维度组合的属性值条目都进行获取后,再处理下一条流水数据,由此可以节省步骤507的排序操作。
在获得表14所示的属性值条目列表后,计算服务器通过标准字符转格式“key/titem”输出属性值条目,其中,将“用户ID”的属性值(即预设维度的属性值)赋值在“key”中,将剩余的维度组合序号、非预设维度属性值赋值在“item”中,所述“/t”为分隔符。
508、通过映射运算对属性值条目列表进行去重计算,得到第一特征值列表。
具体的:
508a、计算服务器在属性值条目列表中顺序读取每一条属性值条目的预设维度属性值。
例如从表14中第第一条属性值条目开始,依次读取维度“用户ID”的属性值:“A、A、A、A、A、A、A、A、B、B”。
计算服务器预先设置第一属性值变量last_key,在读取第一条属性值条目时,将该条属性值条目的属性值“A”赋值于last_key中。
508b、将读取的预设维度属性值与预设的第一属性值变量进行比对。
在读取后续属性值条目时,计算服务器将读取的属性值与last_key中的变量值进行比对,如果两者相同,则表示前后两条属性值条目由同一用户产生,执行步骤508c;如果两者不同,则表示前后两条属性值条目由不同用户产生,执行步骤508d。
508c、将对应预设维度属性值的属性值条目写入到当前的第一特征值子列表中。
所述第一特征值子列表实际上为一个特定用户的第一特征值列表,步骤508b和步骤508c的目的在于将同一个用户所有的属性值条目划分到一个子列表中。
508d、将对应预设维度属性值的属性值条目写入到新的第一特征值子列表中,并将预设维度属性值写入到第一属性值变量中。
例如当读取到表14中的第9行属性值条目时,该条目的维度“用户ID”的属性值为“B”,与last_key中的变量值“A”不相同。由于事先已根据维度“用户ID”的属性值对属性值条目列表进行过相邻排序,因此计算服务器判断用户“A”的所有属性值条目读取完毕,为用户“B”的属性值条目建立一个新的第一特征值子列表,并将last_key赋值为“B”,以便后续继续进行比对。
步骤508a至步骤508d的目的实质上在于按照维度“用户ID”的属性值将属性值条目列表划分为多个子列表。对于表14所示的属性值条目列表,划分后对应用户“A”和用户“B”的子列表分别为表15和表16所示:
key |
value |
11,1 |
1 |
13,1,1 |
1 |
11,2 |
1 |
13,2,1 |
1 |
11,3 |
1 |
13,3,1 |
1 |
11,1 |
1 |
13,1,1 |
1 |
表15
key |
value |
11,3 |
1 |
13,3,0 |
1 |
表16
其中,将属性值条目中维度“用户ID”的属性值去掉,作为“key”值,并增加人数“value”值,每条属性值条目代表一个人,因此将所有属性值条目的“value”值均初始设置为“1”。
508e、针对每个第一特征值子列表,对其中的属性值条目顺序进行遍历,删除重复的属性值条目。
去重过程也可以采用设置变量last_key的方式实现,在同一个子列表(即同一用户的所有属性值条目)中,将当前遍历到的属性值条目中的维度“应用ID”的属性值赋值到last_key,在遍历到下一条属性值条目时,如果下一条属性值条目中的维度“应用ID”的属性值与last_key中的变量相同,则说明这两条属性值条目重复了,计算服务器将在后一条属性值条目删除。
在表15所示的用户A的子列表中,第1条属性值条目与第7条属性值条目重复、第2条属性值条目与第8条属性值条目重复,因此删除第7和第8条属性值条目,得到去重后的子列表如表17所示:
11,1 |
1 |
13,1,1 |
1 |
11,2 |
1 |
13,2,1 |
1 |
11,3 |
1 |
13,3,1 |
1 |
表17
用户B的子列表中不存在重复的属性值条目,因此去重后仍为图16所示的子列表。
508f、将删除重复属性值条目后的多个第一特征值子列表进行整合,获得第一特征值列表。
计算服务器将表17和表18进行整合,以便后续进行累加计算所用。整合后的第一特征值列表如表18所示:
key |
value |
11,1 |
1 |
13,1,1 |
1 |
11,2 |
1 |
13,2,1 |
1 |
11,3 |
1 |
13,3,1 |
1 |
11,3 |
1 |
13,3,0 |
1 |
表18
其中,第1条至第6条属性值条目为用户A的属性值条目,第7条和第8条属性值条目为用户B的属性值条目。
计算服务器通过标准字符转格式“key/titem”输出属性值条目,其中,将表18中key列的属性值赋在“key”中,将“value”值“1”赋在“item”中,所述“/t”为分隔符。
509、通过归纳运算对第一特征值列表进行累加计算,得到第二特征值列表。
具体的;
509a、对属性值条目列表中的属性值条目进行遍历,删除重复的属性值条目。
类似子步骤508e,计算服务器可以采用设置变量last_key的方式,删除重复的属性值条目。需要说明的是,本步骤中删除重复的属性值条目的目的在于对相同属性值条目进行累加计算,而非进行去重计算。具体的,计算服务器根据表18中“key”列的维度“应用ID”对last_key进行赋值,遍历并删除重复的属性值条目。
509b、在每删除一条重复的属性值条目后,将对应该属性值条目的计数值加1,获得包含计数值且无重复属性值条目的第二特征值列表。
具体的,对于表18中第7行的属性值条目,由于与第5条属性值条目相同,因此计算服务器将其删除,并将第5条属性值条目的“value”值加1。最终得到累加计算后的第二特征值列表如表19所示:
key |
value |
11,1 |
1 |
13,1,1 |
1 |
11,2 |
1 |
13,2,1 |
1 |
11,3 |
2 |
13,3,1 |
1 |
13,3,0 |
1 |
表19
510、根据维度组合的序号和/或至少一个维度组合中每个维度的属性值,从第二特征值列表中分析得出指标量结果。
具体的,以根据的维度组合“应用ID”和维度“应用ID”的属性值分析指标量结果为例,计算服务器得出应用1至应用3的在线活跃人数依次为1,1和2。
在本实施例的另一个优选方案中,计算服务器还可以在计算失败或系统死机时释放当前任务的计算资源,以便分配给其他指标量的计算。
在本实施例的再一个优选方案中,当计算服务器为计算服务器集群时,控制服务器可以将一个数据分析任务拆分为多个子任务,然后将多个子任务分别分配给计算服务器中的不同子服务器,进一步提高数据计算的速度。
本实施例提供的数据分析的方法,能够通过一次mapper&reducer运算,对流水数据进行去重和累加计算,可以减少数据计算的时间和资源消耗,提高数据分析系统的处理效率。
此外,本实施例提供的数据分析的方法,还能够通过一次mapper&reducer运算对对应同一指标量的多个维度组合同时进行计算,可以避免现有技术中依次对每个维度组合进行计算造成的流水数据重复读取,能够大大减少数据分析的耗时以及涉及的处理资源。
参考图4或图5所示的方法,本实施例还提供了一种数据分析的装置,所述装置位于图3中所示的计算服务器32中,用于对图4或图5所示的方法进行实现。如图6所示,所述装置包括:数据读取单元61、数据排序单元62、属性提取单元63、属性去重单元64、属性累加单元65以及结果分析单元66,其中
所述数据读取单元61,用于从流水数据集合中逐条读取流水数据,所述流水数据包括多个维度的属性值;
所述数据排序单元62,用于根据预设维度(View)中的属性值对所述数据读取单元61读取的流水数据进行归一化排序;
所述属性提取单元63,用于对所述数据排序单元62归一化排序后的流水数据逐条提取属性值条目,获得属性值条目列表;
所述属性去重单元64,用于通过映射(Mapper)运算对所述属性提取单元63提取的所述属性值条目列表进行去重计算,得到第一特征值列表;
所述属性累加单元65,用于通过归纳(Reducer)运算对所述属性去重单元64计算的所述第一特征值列表进行累加计算,得到第二特征值列表;
所述结果分析单元66,用于根据所述属性累加单元65计算的所述第二特征值列表分析得出指标量结果。
进一步的,如图7所示,所述装置还包括:
数据验证单元71,用于在所述数据排序单元62进行归一化排序前,对所述数据读取单元61读取的流水数据进行合法性验证。
进一步的,所述数据排序单元62用于将所述预设维度中属性值相同的多条流水数据进行相邻排序。
进一步的,如图8所示,所述属性提取单元63,包括:
提取子单元81,用于针对每一条流水数据,根据至少一个维度组合分别提取至少一条属性值条目,其中所述维度组合由至少一个非预设维度组成;
排序子单元82,用于将所述提取子单元81提取的、对应一条流水数据的至少一条属性值条目进行相邻排序;
所述提取子单元81用于针对每一个维度组合,从所述流水数据中分别提取对应该维度组合中每个非预设维度的属性值,获得至少一个属性值,将所述流水数据的预设维度属性值、所述维度组合的序号以及所述至少一个属性值组合,获得一条属性值条目。
进一步的,如图8所示,所述属性去重单元64,包括:
读取子单元83,用于在所述属性值条目列表中,顺序读取每一条属性值条目的预设维度属性值;
比对子单元84,用于将所述读取子单元83读取的预设维度属性值与预设的第一属性值变量进行比对;
写入子单元85,用于当所述比对子单元84的比对结果为相同时,将对应所述预设维度属性值的属性值条目写入到当前的第一特征值子列表中;
所述写入子单元85还用于当所述比对子单元84的比对结果为不同时,将对应所述预设维度属性值的属性值条目写入到新的第一特征值子列表中,并将所述预设维度属性值写入到第一属性值变量中;
第一删除子单元86,用于针对每个第一特征值子列表,对所述读取子单元83读取的属性值条目顺序进行遍历,删除重复的属性值条目;
整合子单元87,用于将所述第一删除子单元86删除重复属性值条目后的多个第一特征值子列表进行整合,获得所述第一特征值列表。
进一步的,如图8所示,所述属性累加单元65,包括:
第二删除子单元88,用于对所述属性值条目列表中的属性值条目进行遍历,删除重复的属性值条目;
计数子单元89,用于在所述第二删除子单元88每删除一条重复的属性值条目后,将对应该属性值条目的计数值加1,获得包含计数值且无重复属性值条目的第二特征值列表。
进一步的,所述结果分析单元66用于根据所述维度组合的序号和/或至少一个维度组合中每个维度的属性值,从所述第二特征值列表中分析得出所述指标量结果。
本发明实施例提供一种数据分析的装置,能够在进行数据分析之前对原始流水数据进行预处理操作,以减少后续分析过程中涉及的数据量和计算量。具体的,根据预设维度(View)中的属性值对读取的流水数据进行归一化排序,对归一化排序后的流水数据逐条提取属性值条目,获得属性值条目列表。然后基于预处理后的属性值条目列表,通过一次mapper&reducer计算进行去重和累加运算,并分析得出指标量结果。与现有技术中需要通过两次mapper&reducer计算得到指标量结果相比,可以节省数据分析的计算量,对于大数据场景而言,能够避免数据库系统出现计算瓶颈同时提高系统的数据分析效率。
此外,本发明实施例提供的数据分析的装置,由于在数据分析前对流水数据进行了预处理操作,按照预设维度中的属性值对读取的流水数据进行归一化排序,因此可以使相同预设维度属性值的多条流水数据集中排序,对于立方体数据结构而言,在进行去重累加计算时,可以同时从多个维度或维度组合上对数据进行分析。与现有技术相比,当运营商需要从几十甚至几百个维度或维度组合上计算一个指标量结果时,能够一次性完成多个维度或维度组合上的数据分析,避免多次读取流水数据对时间和系统计算资源的占用,应用到立方体数据结构中时能够极大提高系统的数据分析效率。
进一步的,本实施例还提供了一种数据分析的系统,如图9所示,该系统包括控制服务器91和计算服务器92,其中,
所述控制服务器91,用于对多项数据分析任务进行优先级排序,向所述计算服务器92提交数据分析任务,接收并记录所述计算服务器92的数据分析状态;
所述计算服务器92,用于根据所述控制服务器91提交的数据分析任务从流水数据集合中逐条读取流水数据,所述流水数据包括多个维度的属性值,根据预设维度(View)中的属性值对读取的流水数据进行归一化排序,对归一化排序后的流水数据逐条提取属性值条目,获得属性值条目列表,通过映射(Mapper)运算对所述属性值条目列表进行去重计算,得到第一特征值列表,通过归纳(Reducer)运算对所述第一特征值列表进行累加计算,得到第二特征值列表,根据所述第二特征值列表分析得出指标量结果。
进一步的,所述计算服务器92为分布式计算服务器92集群,所述分布式计算服务器92集群包含至少两个子计算服务器92;
所述控制服务器还用于将数据分析任务拆分为至少两个子任务,将所述至少两个子任务分别分配给所述至少两个子计算服务器92。
本发明实施例提供一种数据分析的系统,能够在进行数据分析之前对原始流水数据进行预处理操作,以减少后续分析过程中涉及的数据量和计算量。具体的,根据预设维度(View)中的属性值对读取的流水数据进行归一化排序,对归一化排序后的流水数据逐条提取属性值条目,获得属性值条目列表。然后基于预处理后的属性值条目列表,通过一次mapper&reducer计算进行去重和累加运算,并分析得出指标量结果。与现有技术中需要通过两次mapper&reducer计算得到指标量结果相比,可以节省数据分析的计算量,对于大数据场景而言,能够避免数据库系统出现计算瓶颈同时提高系统的数据分析效率。
此外,本发明实施例提供的数据分析的系统,由于在数据分析前对流水数据进行了预处理操作,按照预设维度中的属性值对读取的流水数据进行归一化排序,因此可以使相同预设维度属性值的多条流水数据集中排序,对于立方体数据结构而言,在进行去重累加计算时,可以同时从多个维度或维度组合上对数据进行分析。与现有技术相比,当运营商需要从几十甚至几百个维度或维度组合上计算一个指标量结果时,能够一次性完成多个维度或维度组合上的数据分析,避免多次读取流水数据对时间和系统计算资源的占用,应用到立方体数据结构中时能够极大提高系统的数据分析效率。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。