基于Spark的批量任务处理方法、装置及计算机可读介质制造方法及图纸

技术编号:37872135 阅读:10 留言:0更新日期:2023-06-15 21:01
本发明专利技术涉及一种基于Spark的批量任务处理方法、装置及计算机可读介质。方法包括:获取任务,所述任务中包括多个表,所述多个表位于数据仓库中的多个层中,所述多个层具有上下层关系;计算每个表的重要性特征,所述重要性特征包括出度、底层关联数据量和过滤聚合操作次数,其中,所述出度用于表征所述表被下层表依赖的程度;根据每个表的所述重要性特征为每个表分配权重;根据所述权重获得排序,根据所述排序依次运行所述任务中的多个表。本发明专利技术通过在运行任务前,解析数据表的依赖、根据表的重要性特征为每个表设置权重,根据权重调整各个数据表的运行顺序,有效提高了批量任务处理的效率。效率。效率。

【技术实现步骤摘要】
基于Spark的批量任务处理方法、装置及计算机可读介质


[0001]本专利技术主要涉及信息处理领域,具体地涉及一种基于Spark的批量任务处理方法、装置及计算机可读介质。

技术介绍

[0002]随着数据的获取越来越方便,公司数据的存储量已经成几何形式增长,数据从原始的单台机器计算和处理变成了多台机器计算和处理才能完成,向分布式并发时代迈进。为了专门应对大数据量下的迭代计算,尤其是数据挖掘下模型的训练、梯度更新等场景,伯克利大学开发了Spark计算框架。Spark运行任务以是否触发action动作(如最终数据写、汇总等操作)来判断sql是否开始真正执行,每个action是一个任务(job),当有一批sql执行数据仓库技术中的抽取转换加载(Extract

Transform

Load,简称ETL)时,Spark将根据ETL触发的action数目来确定最终形成多少个job。
[0003]在Spark框架中,任务通常会涉及多张表,表的运行顺序十分重要,因为这些顺序常常会影响整个任务的效率。尽管Spark通过action机制智能的划分job和解析依赖表,但Spark并不能权衡各个job的时间复杂度,导致整批任务处理效率低下。

技术实现思路

[0004]本专利技术所要解决的技术问题是提供一种基于Spark的批量任务处理方法、装置及计算机可读介质,解决Spark批量任务处理效率低下的问题。
[0005]为解决上述技术问题,本专利技术提供了一种基于Spark的批量任务处理方法,包括:获取任务,所述任务中包括多个表,所述多个表位于数据仓库中的多个层中,所述多个层具有上下层关系;计算每个表的重要性特征,所述重要性特征包括出度、底层关联数据量和过滤聚合操作次数,其中,所述出度用于表征所述表被下层表依赖的程度;根据每个表的所述重要性特征为每个表分配权重;根据所述权重获得排序,根据所述排序依次运行所述任务中的多个表。
[0006]在本申请的一实施例中,所述权重包括出度权重、底层关联数据量权重和过滤聚合操作次数权重,所述出度权重等于所述表的出度除以所述表所在层的所有表的出度,所述底层关联数据量权重等于所述表的底层关联数据量除以所有表的底层关联数据总量,所述过滤聚合操作次数权重等于所述表的过滤聚合操作次数除以所有表的统计计算总数。
[0007]在本申请的一实施例中,每个表的权重等于所述出度权重、所述底层关联数据量权重和所述过滤聚合操作次数权重三者的平均值。
[0008]在本申请的一实施例中,所述过滤聚合操作次数包括过滤操作次数和/或聚合操作次数。
[0009]在本申请的一实施例中,根据ods层表数据量和表依赖关系计算所述底层关联数据量。
[0010]在本申请的一实施例中,所述多个表包括应用层表和非应用层表,根据所述权重
获得排序,根据所述排序依次运行所述任务中的多个表的步骤包括:
[0011]步骤S61:根据所述权重从大到小对应用层表进行第一排序,按照第一排序的顺序根据步骤S62~步骤S66运行每个应用层表;
[0012]步骤S62:将当前应用层表作为初始表,将所述初始表作为当前表;
[0013]步骤S63:判断所述当前表是否存在下层依赖表,并且所述下层依赖表未运行过;
[0014]步骤S64:若步骤S63的判断结果为是,对所述下层依赖表按照权重从大到小排序获得第二排序,按照所述第二排序依次运行所述下层依赖表;
[0015]步骤S65:在运行所述下层依赖表时,将每个所述下层依赖表作为所述当前表,重复执行步骤S63至步骤S65,直到所述下层依赖表不存在下层依赖表时,执行步骤S66;
[0016]步骤S66:运行所述初始表。
[0017]在本申请的一实施例中,还包括:判断所述表是否被运行过,若所述表已经被运行过,则不再运行所述表。
[0018]在本申请的一实施例中,还包括:获得所述任务的有向无环图,所述有向无环图用于表征所述多个表的依赖关系,根据所述有向无环图获得每个表的出度;在根据每个表的所述重要性特征为每个表分配权重的步骤之后,还包括:根据所述有向无环图和所述权重生成带权有向无环图,所述带权有向无环图包括顶点和连接两个所述顶点的边,所述顶点对应于所述表,所述边用于表示与所述边相连接的两个所述顶点的依赖关系,每个所述顶点具有所述权重。
[0019]在本申请的一实施例中,还包括:根据所述有向无环图获得每个表的入度,将所述入度大于1的目标表的数据缓存在内存中,当所述目标表被其他表引用时,直接从所述内存中获得所述目标表的数据。
[0020]为解决上述技术问题,本专利技术还提供了一种基于Spark的批量任务处理装置,包括:存储器,用于存储可由处理器执行的指令;处理器,用于执行所述指令以实现如上所述的基于Spark的批量任务处理方法。
[0021]为解决上述技术问题,本专利技术还提供了一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如上所述的基于Spark的批量任务处理方法。
[0022]本专利技术的技术方案通过在运行任务前,解析数据表的依赖、根据表的重要性特征为每个表设置权重,根据权重调整各个数据表的运行顺序,有效提高了批量任务处理的效率;通过缓存依赖表中被多次引用的表,有效节省了计算资源,减少了程序运行的时间,提高了Spark运行的效率。
附图说明
[0023]为让本专利技术的上述目的、特征和优点能更明显易懂,以下结合附图对本专利技术的具体实施方式作详细说明,其中:
[0024]图1是根据本专利技术一实施例的基于Spark的批量任务处理方法的示例性流程图;
[0025]图2A

2C是根据本专利技术一实施例的基于Spark的批量任务处理方法的示例性有向无环图;
[0026]图3是根据本专利技术一实施例的基于Spark的批量任务处理方法的出度和入度定义
图;
[0027]图4是根据本专利技术一实施例的基于Spark的批量任务处理方法的示例性有向无环图;
[0028]图5是根据图4所示实施例所生成的带权有向无环图的示例;
[0029]图6是根据本专利技术一实施例的基于Spark的批量任务处理装置的系统框图。
具体实施方式
[0030]为让本专利技术的上述目的、特征和优点能更明显易懂,以下结合附图对本专利技术的具体实施方式作详细说明。
[0031]在下面的描述中阐述了很多具体细节以便于充分理解本专利技术,但是本专利技术还可以采用其它不同于在此描述的其它方式来实施,因此本专利技术不受下面公开的具体实施例的限制。
[0032]如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Spark的批量任务处理方法,包括:获取任务,所述任务中包括多个表,所述多个表位于数据仓库中的多个层中,所述多个层具有上下层关系;计算每个表的重要性特征,所述重要性特征包括出度、底层关联数据量和过滤聚合操作次数,其中,所述出度用于表征所述表被下层表依赖的程度;根据每个表的所述重要性特征为每个表分配权重;根据所述权重获得排序,根据所述排序依次运行所述任务中的多个表。2.如权利要求1所述的批量任务处理方法,其特征在于,所述权重包括出度权重、底层关联数据量权重和过滤聚合操作次数权重,所述出度权重等于所述表的出度除以所述表所在层的所有表的出度,所述底层关联数据量权重等于所述表的底层关联数据量除以所有表的底层关联数据总量,所述过滤聚合操作次数权重等于所述表的过滤聚合操作次数除以所有表的统计计算总数。3.如权利要求2所述的批量任务处理方法,其特征在于,每个表的权重等于所述出度权重、所述底层关联数据量权重和所述过滤聚合操作次数权重三者的平均值。4.如权利要求1所述的批量任务处理方法,其特征在于,所述过滤聚合操作次数包括过滤操作次数和/或聚合操作次数。5.如权利要求1所述的批量任务处理方法,其特征在于,根据ods层表数据量和表依赖关系计算所述底层关联数据量。6.如权利要求1所述的批量任务处理方法,其特征在于,所述多个表包括应用层表和非应用层表,根据所述权重获得排序,根据所述排序依次运行所述任务中的多个表的步骤包括:步骤S61:根据所述权重从大到小对应用层表进行第一排序,按照第一排序的顺序根据步骤S62~步骤S66运行每个应用层表;步骤S62:将当前应用层表作为初始表,将所述初始表作为当前表;步骤S63:判断所述当前表是否存在下层依赖表,并...

【专利技术属性】
技术研发人员:戴橙陈诚王仕凯
申请(专利权)人:杭州太美星程医药科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1