CN104008178B - 一种数据的动态加载处理方法及系统 - Google Patents
一种数据的动态加载处理方法及系统 Download PDFInfo
- Publication number
- CN104008178B CN104008178B CN201410252721.1A CN201410252721A CN104008178B CN 104008178 B CN104008178 B CN 104008178B CN 201410252721 A CN201410252721 A CN 201410252721A CN 104008178 B CN104008178 B CN 104008178B
- Authority
- CN
- China
- Prior art keywords
- task
- loading
- combined
- atomic
- instant
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种数据的动态加载处理方法及系统,所述方法包括:获取当前系统的待加载的原子任务;根据所述的原子任务生成组合任务;动态采集当前系统的即时中央处理器CPU使用率、即时输入/输出IO使用率;根据所述的即时CPU使用率、即时IO使用率加载所述的组合任务。通过将原ETL任务中的源表——目标表关系视为一个原子任务,对其进行动态组合,使得ETL任务具备较高的灵活性,实现原子任务较高层次的复用度,动态组合任务加载,做到系统资源得以充分的利用,最大程度地优化提升数据仓库对外提供服务质量。
Description
技术领域
本发明关于计算机数据技术领域,特别是关于计算机数据的抽取、转换、装载技术,具体的讲是一种数据的动态加载处理方法及系统。
背景技术
数据仓库是一个庞大的数据海洋,海量的数据都是通过ETL(Extract TransformLoad、数据抽取、转换、装载)任务来完成加载转换的。随着计算机技术的日益发展,数据仓库的规模不断壮大,纳入的数据源与日俱增,其时效性也参差不齐。
现有技术中的ETL任务,是将进相同数据仓库模型实体的不同源表全部组合在同一个加载任务中,仅当该任务的所有上游源表到齐后,才开始加载转换。因此,通过现有技术中的ETL任务来完成加载转换存在如下问题:
1、加载任务若集中在一段时间内爆发,爆发前上游数据到达却不加载,会导致系统空闲;爆发后若系统繁忙压力较大,会导致加载速度受限于系统资源。
2、涉及批量中关键路径上的作业,只能通过固定拆分任务实现调整,不够自动、灵活。
因此,如何提出一种基于数据的动态加载处理的方案,其能够克服数据仓库ETL任务内容固定组合所带来的不利影响是本领域亟待解决的技术难题。
发明内容
为了克服现有技术存在的数据仓库ETL任务内容固定组合所带来的不利影响的技术问题,本发明提供了一种数据的动态加载处理方法及系统,将原ETL任务中的源表——目标表关系视为一个原子任务,对其进行动态组合,实现较优原子组合,以充分利用系统资源,提高ETL效率,提高数据仓库对外数据服务效益。
本发明的目的之一是,提供一种数据的动态加载处理方法,包括:获取当前系统的待加载的原子任务;根据所述的原子任务生成组合任务;动态采集当前系统的即时中央处理器CPU使用率、即时输入/输出IO使用率;根据所述的即时CPU使用率、即时IO使用率加载所述的组合任务。
本发明的目的之一是,提供了一种数据的动态加载处理系统,所述的系统具体包括:原子任务获取装置,用于获取当前系统的待加载的原子任务;组合任务生成装置,用于根据所述的原子任务生成组合任务;即时使用率采集装置,用于动态采集当前系统的即时中央处理器CPU使用率、即时输入/输出IO使用率;组合任务加载装置,用于根据所述的即时CPU使用率、即时IO使用率加载所述的组合任务。
本发明的有益效果在于,提供了一种数据的动态加载处理方法及系统,通过将原ETL任务中的源表——目标表关系视为一个原子任务,对其进行动态组合,使得ETL任务具备较高的灵活性,实现原子任务较高层次的复用度,动态组合任务加载,做到系统资源得以充分的利用,最大程度地优化提升数据仓库对外提供服务质量。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据的动态加载处理方法的流程图;
图2为图1中的步骤S102的具体流程图;
图3为图1中的步骤S104的实施方式一的具体流程图;
图4为图1中的步骤S104的实施方式二的具体流程图;
图5为图1中的步骤S104的实施方式三的具体流程图;
图6为图3中的步骤S304的具体流程图;
图7为图3中的步骤S305的具体流程图;
图8为本发明提供的一种数据的动态加载处理方法在具体实例中的流程图;
图9为本发明实施例提供的一种数据的动态加载处理系统的结构框图;
图10为本发明实施例提供的一种数据的动态加载处理系统中组合任务生成装置200的结构框图;
图11为本发明实施例提供的一种数据的动态加载处理系统中组合任务加载装置400的实施方式一的结构框图;
图12为本发明实施例提供的一种数据的动态加载处理系统中组合任务加载装置400的实施方式二的结构框图;
图13为本发明实施例提供的一种数据的动态加载处理系统中组合任务加载装置400的实施方式三的结构框图;
图14为本发明实施例提供的一种数据的动态加载处理系统中资源确定模块404的结构框图;
图15为本发明实施例提供的一种数据的动态加载处理系统中加载模块405的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提出一种数据的动态加载处理方法,克服了数据仓库ETL任务内容固定组合所带来的不利影响,将原ETL任务中的源表——目标表关系视为一个原子任务,不同的任务按需动态地组合多个原子任务,实现较优原子组合,以充分利用系统资源,提高ETL效率,提高数据仓库对外数据服务效益。
图1为本发明提出的一种数据的动态加载处理方法的具体流程图,由图1可知,所述的方法包括:
S101:获取当前系统的待加载的原子任务。
在具体的实施例中,原子任务的格式定义如下:ATOM_S-TBL_T-TBL_YYYYMMDD,去找,S-TBL表示源表、T-TBL表示目标表、YYYYMMDD表示加载日期。
当前系统中存储有原子定义的描述,如表1所示,原子的具体内容如表2所示。
表1
表2
序号 | 域名 | 备注 |
1 | 原子编号 | 如:ATOM_1 |
2 | 源表 | 如:MF1_LTHAGACC |
3 | 目标表 | 如:T02_PROD_GROUP_TREE_INFO_H_MF0_A |
4 | 加工逻辑 | 如:拉链算法 |
表2中的拉链算法是数据仓库中存储数据的一种算法,维护数据的生存周期,实现逻辑删除,保留数据的历史变迁过程。数据表中关链的数据即为删除,开链数据即为有效。算法逻辑如下(记:源表为s,目录表为t):
1、创建临时表:v存储s表数据
2、全量比对v表和t表
若存在v表和t表,则根据v表记录按主键更新t表记录,并将其关链;
若存在v表,不存在t表,则根据v表记录插入t表,并开链。
S102:根据所述的原子任务生成组合任务。
图2为图1中的步骤S102的具体流程图,由图2可知,在具体的实施例中该步骤具体包括:
S201:确定所述原子任务的目标表。在具体的实施例中,原子任务的格式定义若为:ATOM_S-TBL_T-TBL_YYYYMMDD,则可直接确定出目标表为T-TBL。
S202:确定所述原子任务的源表。在具体的实施例中,原子任务的格式定义若为:ATOM_S-TBL_T-TBL_YYYYMMDD,则可直接确定出源表为S-TBL。
S203:根据所述原子任务的源表以及目标表对所述的原子任务进行组合,生成组合任务。在具体的实施方式中,首先汇集T-TBL相同的原子任务集,将原ETL任务中的源表——目标表关系视为一个原子任务,不同的ETL任务按需动态地组合多个原子任务,生成组合任务,使得ETL任务具备较高的灵活性。
在具体的实施方案中,按照表1、表2的原子定义,获取原子加工逻辑,组合所有原子任务,生成组合任务,原子任务组合实例如表3所示:
表3
由图1可知,该方法还包括:
S103:动态采集当前系统的即时中央处理器CPU使用率、即时输入/输出IO使用率。如具体实施例中,采集当前系统即时资源消耗情况,即IO和CPU使用率,如CPU使用率为59%,IO使用率为80%。可以通过sar、iostat、nmon等系统工具来获取。
S104:根据所述的即时CPU使用率、即时IO使用率加载所述的组合任务。任务的加载情况可以通过各类调度工具进行记录;任务的资源消耗可以通过数据库系统工具记录并进行分析(如:Oracle平台的AWR、Teradata平台的DBQL等)。
也即,本发明提供了一种基于动态数据加载处理方法,调整开发模式,先通过原子任务的开发,再对其进行动态组合,使得ETL任务具备较高的灵活性;实现原子任务较高层次的复用度;动态组合任务加载,做到系统资源得以充分的利用,最大程度地优化提升数据仓库对外提供服务质量。
图3为步骤S104的实施方式一的具体流程图,由图3可知,该步骤在实施方式一中具体包括:
S301:获取当前系统的CPU使用上限以及IO使用上限,系统使用上限如CPU使用上限为70%、IO使用上限为90%。
S302:根据所述的即时CPU使用率、当前系统的CPU使用上限判断所述的即时CPU使用率是否饱和;
S303:当判断为否时,根据所述的即时IO使用率、当前系统的IO使用上限继续判断所述的即时IO使用率是否饱和;
S304:当判断为否时,确定所述组合任务的加载所需资源;
S305:根据所述的加载所需资源、所述的CPU使用上限以及IO使用上限加载所述的组合任务。
图6为图3中的步骤S304的具体流程图,由图6可知,该步骤具体包括:
S601:获取所述原子任务的原子生成记录、运行时间以及数据规模。
在具体的实施方式中,当前系统中存储有原子任务的原子生成记录、组合任务加载记录,组合任务加载记录的描述如表4所示,其具体组成如表5所示。从表5中,可以直接得到原子任务的数据规模,由表5中的开始加载时间、结束加载时间可以确定出原子任务的运行时间。
表4
表5
序号 | 域名 | 备注 |
1 | 组合任务编号 | 如:ASSEMBLED_1 |
2 | 原子编号 | 如:ATOM_1、ATOM_2、ATOM_3等 |
3 | 开始加载时间 | 如:’2013-07-3101:00:00’ |
4 | 结束加载时间 | 如:’2013-07-3103:29:13’ |
5 | CPU消耗 | 如:31秒 |
6 | IO消耗 | 如:109次IO操作 |
7 | 数据规模 | 如:300GB |
8 | 加载日期 | 如:’2013-07-30’ |
原子生成记录的描述如表6所示,其具体组成如表7所示。
表6
表名 | 描述 |
原子生成记录 | 记录历史原子生成记录 |
表7
序号 | 域名 | 备注 |
1 | 原子编号 | 如:ATOM_1 |
2 | 生成时间 | 如:’2013-07-3101:00:00’ |
3 | 加载日期 | 如:’2013-07-30’ |
4 | 数据规模 | 如:11GB |
S602:根据所述的运行时间以及数据规模确定原子数据加载效率。如表8所示,原子任务A的单位数据的加载效率=任务A的运行时间/数据规模,即任务A的加载效率是1.5*10-7s/B;同理:任务B的加载效率是1.6*10-3。
表8
任务 | 数据规模(B) | 运行时间(s) | 加载效率(s/B) |
A | 987,822,080 | 150 | 1.5*10-7 |
B | 1,505,280 | 2441 | 1.6*10-3 |
S603:根据所述的原子数据加载效率以及原子生成记录确定所述组合任务的加载完成时间。
系统中,根据原子生成记录,可计算历史上近一段时间范围原子到达情况,按多个时间区间分布计算出其到达概率。
接收消息(包括本已接收的原子任务集),读取原子生成记录,获取该原子数据规模,再读取原子单位数据规模加载效率信息,计算得出组合任务的加载时间,再读取原子任务到达时间分布情况,比较组合任务完成时间一定范围内是否有其它原子任务到达,以决策是否等待后续原子任务到达,具体判断标准视各应用实际情况而定。
接收消息(包括本已接收的原子任务集),读取原子生成记录,获取该原子数据规模,再读取原子单位数据规模的资源消耗信息,计算得出组合任务加载资源消耗情况,以决策组合任务加载后系统饱和度,具体判断标准视各应用实际情况而定。
S604:获取所述原子任务的到达时间区间。在具体的实施方式中,当前系统中存储有原子任务的到达时间区间,原子任务到达时间区间分布的描述如表9所示,具体组成如表10所示。
表9
表10
序号 | 域名 | 备注 |
1 | 原子编号 | 如:ATOM_1 |
2 | 时间区间 | 如:04:00-04:30 |
3 | 到达概率 | 如:90% |
在具体的实施方式中,从原子任务到达时间分布中获取相同目标表,且未到达原子的历史到达情况。根据完成时刻和待到达的原子任务时间区间分布,计算完成时刻和完成时间区间的关系。
S605:当所述组合任务的加载完成时间在所述的到达时间区间内时,获取所述原子任务的资源消耗。
当前系统中存储有组合任务加载记录,组合任务加载记录的描述如表4所示,其具体组成如表5所示。从表5中,可以直接得到原子任务的数据规模、CPU资源消耗、IO资源消耗。如表11所示,原子任务的单位数据资源消耗=资源使用情况/数据规模。如任务A的原子任务单位数据CPU资源消耗=1*10-10,IO资源消耗=9.7*10-4。同理任务B的资源消耗情况如表11所示。
表11
S606:根据所述的资源消耗以及原子生成记录确定所述组合任务的加载所需资源。
图7为图3中的步骤S305的具体流程图,由图7可知,该步骤具体包括:
S701:根据所述加载所需资源确定所述组合任务加载所需的CPU使用率以及IO使用率;
S702:判断所述组合任务加载所需的CPU使用率是否超出当前系统的CPU使用上限;
S703:当判断为否时,继续判断所述组合任务加载所需的IO使用率是否超出当前系统的IO使用上限;
S704:当判断为否时,加载所述的组合任务。
图4为图1中的步骤S104的实施方式二的具体流程图,由图4可知,该步骤在实施方式二中具体包括:
S401:获取当前系统的CPU使用上限以及IO使用上限,系统使用上限如CPU使用上限为70%、IO使用上限为90%。
S402:根据所述的即时CPU使用率、当前系统的CPU使用上限判断所述的即时CPU使用率是否饱和;
S403:当判断为否时,根据所述的即时IO使用率、当前系统的IO使用上限继续判断所述的即时IO使用率是否饱和;
S404:当判断为是时,获取所述原子任务的运行时间、资源消耗。
在具体的实施方式中,当前系统中存储有原子任务的组合任务加载记录,组合任务加载记录的描述如表4所示,其具体组成如表5所示。由表5中的开始加载时间、结束加载时间可以确定出原子任务的运行时间。从表5中,可以直接得到原子任务的数据规模、CPU资源消耗、IO资源消耗。如表11所示,原子任务的单位数据资源消耗=资源使用情况/数据规模。如任务A的原子任务单位数据CPU资源消耗=1*10-10,IO资源消耗=9.7*10-4。同理任务B的资源消耗情况如表11所示。
S405:根据所述的运行时间、资源消耗确定所述原子任务的属性偏向。
如表12所示,任务A运行时间是150秒,在此期间消耗了CPU0.1s和完成了967,930次IO操作,涉及数据规模达987,822,080B,因此,该任务的CPU消耗时间/运行时间的占比是0.06%;任务B运行时间是2441秒,在此期间消耗了CPU748s和完成了34,963,845次IO操作,涉及数据规模达1,505,280B,因此,该任务的CPU消耗时间/运行时间的占比是30.6%。通过对比任务A和任务B的数据规模、CPU消耗时间/运行时间占比,可以界定任务A属性偏向IO,属于IO型;而任务B属性偏向CPU,属于CPU型。基于上述:可以通过任务的CPU消耗时间/运行时间的占比来决策原子任务的属性偏向,具体占比标准需根据实际应用特点来区别对待。
表12
S406:根据所述原子任务的属性偏向确定所述组合任务的属性偏向;
S407:判断所述组合任务的属性偏向是否为CPU型;
S408:当判断为是时,加载所述的组合任务。
图5为图1中的步骤S104的实施方式三的具体流程图,由图5可知,该步骤在实施方式三中具体包括:
S501:获取当前系统的CPU使用上限以及IO使用上限,系统使用上限如CPU使用上限为70%、IO使用上限为90%。
S502:根据所述的即时CPU使用率、当前系统的CPU使用上限判断所述的即时CPU使用率是否饱和;
S503:当判断为是时,根据所述的即时IO使用率、当前系统的IO使用上限继续判断所述的即时IO使用率是否饱和;
S504:当判断为否时,获取所述原子任务的运行时间、资源消耗。在具体的实施方式中,当前系统中存储有原子任务的组合任务加载记录,组合任务加载记录的描述如表4所示,其具体组成如表5所示。由表5中的开始加载时间、结束加载时间可以确定出原子任务的运行时间。从表5中,可以直接得到原子任务的CPU资源消耗、IO资源消耗。
S505:根据所述的运行时间、资源消耗确定所述原子任务的属性偏向。
如表12所示,任务A运行时间是150秒,在此期间消耗了CPU0.1s和完成了967,930次IO操作,涉及数据规模达987,822,080B,因此,该任务的CPU消耗时间/运行时间的占比是0.06%;任务B运行时间是2441秒,在此期间消耗了CPU748s和完成了34,963,845次IO操作,涉及数据规模达1,505,280B,因此,该任务的CPU消耗时间/运行时间的占比是30.6%。通过对比任务A和任务B的数据规模、CPU消耗时间/运行时间占比,可以界定任务A属性偏向IO,属于IO型;而任务B属性偏向CPU,属于CPU型。基于上述:可以通过任务的CPU消耗时间/运行时间的占比来决策原子任务的属性偏向,具体占比标准需根据实际应用特点来区别对待。
S506:根据所述原子任务的属性偏向确定所述组合任务的属性偏向;
S507:判断所述组合任务的属性偏向是否为IO型;
S508:当判断为是时,加载所述的组合任务。
如上即为本发明提供的一种数据的动态加载处理方法,基于历史ETL任务加载情况,计算获得原子属性偏向、单位数据规模数据加载效率、CPU使用率和IO使用率,动态采集系统CPU和IO使用情况,根据以上决策信息动态地组合原子生成并加载ETL任务。
图9为本发明实施例提供的一种数据的动态加载处理系统的结构框图,由图9可知,所述的系统包括:
原子任务获取装置100,用于获取当前系统的待加载的原子任务。
在具体的实施例中,原子任务的格式定义如下:ATOM_S-TBL_T-TBL_YYYYMMDD,去找,S-TBL表示源表、T-TBL表示目标表、YYYYMMDD表示加载日期。
当前系统中存储有原子定义的描述,如表1所示,原子的具体内容如表2所示。
表2中的拉链算法是数据仓库中存储数据的一种算法,维护数据的生存周期,实现逻辑删除,保留数据的历史变迁过程。数据表中关链的数据即为删除,开链数据即为有效。算法逻辑如下(记:源表为s,目录表为t):
1、创建临时表:v存储s表数据
2、全量比对v表和t表
若存在v表和t表,则根据v表记录按主键更新t表记录,并将其关链;
若存在v表,不存在t表,则根据v表记录插入t表,并开链。
组合任务生成装置200,用于根据所述的原子任务生成组合任务。
图10为组合任务生成装置200的结构框图,由图10可知,在具体的实施例中该组合任务生成装置200具体包括:
目标表确定模块201,用于确定所述原子任务的目标表。在具体的实施例中,原子任务的格式定义若为:ATOM_S-TBL_T-TBL_YYYYMMDD,则可直接确定出目标表为T-TBL。
源表确定模块202,用于确定所述原子任务的源表。在具体的实施例中,原子任务的格式定义若为:ATOM_S-TBL_T-TBL_YYYYMMDD,则可直接确定出源表为S-TBL。
组合模块203,用于根据所述原子任务的源表以及目标表对所述的原子任务进行组合,生成组合任务。在具体的实施方式中,首先汇集T-TBL相同的原子任务集,将原ETL任务中的源表——目标表关系视为一个原子任务,不同的ETL任务按需动态地组合多个原子任务,生成组合任务,使得ETL任务具备较高的灵活性。
在具体的实施方案中,按照表1、表2的原子定义,获取原子加工逻辑,组合所有原子任务,生成组合任务,原子任务组合实例如表3所示。
由图9可知,该系统还包括:
即时使用率采集装置300,用于动态采集当前系统的即时中央处理器CPU使用率、即时输入/输出IO使用率。如具体实施例中,采集当前系统即时资源消耗情况,即IO和CPU使用率,如CPU使用率为59%,IO使用率为80%。可以通过sar、iostat、nmon等系统工具来获取。
组合任务加载装置400,用于根据所述的即时CPU使用率、即时IO使用率加载所述的组合任务。任务的加载情况可以通过各类调度工具进行记录;任务的资源消耗可以通过数据库系统工具记录并进行分析(如:Oracle平台的AWR、Teradata平台的DBQL等)。
也即,本发明提供了一种基于动态数据加载处理系统,调整开发模式,先通过原子任务的开发,再对其进行动态组合,使得ETL任务具备较高的灵活性;实现原子任务较高层次的复用度;动态组合任务加载,做到系统资源得以充分的利用,最大程度地优化提升数据仓库对外提供服务质量。
图11为本发明实施例提供的一种数据的动态加载处理系统中组合任务加载装置400的实施方式一的结构框图,由图11可知,该组合任务加载装置在实施方式一中具体包括:
使用上限获取模块401,用于获取当前系统的CPU使用上限以及IO使用上限,系统使用上限如CPU使用上限为70%、IO使用上限为90%。
CPU判断模块402,用于根据所述的即时CPU使用率、当前系统的CPU使用上限判断所述的即时CPU使用率是否饱和;
第一IO判断模块403,用于当所述的CPU判断模块判断为否时,根据所述的即时IO使用率、当前系统的IO使用上限继续判断所述的即时IO使用率是否饱和;
资源确定模块404,用于当所述的IO判断模块判断为否时,确定所述组合任务的加载所需资源;
加载模块405,用于根据所述的加载所需资源、所述的CPU使用上限以及IO使用上限加载所述的组合任务。
图14为资源确定模块404的结构框图,由图14可知,该资源确定模块具体包括:
数据获取单元4041,用于获取所述原子任务的原子生成记录、运行时间以及数据规模。
在具体的实施方式中,当前系统中存储有原子任务的原子生成记录、组合任务加载记录,组合任务加载记录的描述如表4所示,其具体组成如表5所示。从表5中,可以直接得到原子任务的数据规模,由表5中的开始加载时间、结束加载时间可以确定出原子任务的运行时间。原子生成记录的描述如表6所示,其具体组成如表7所示。
加载效率确定单元4042,用于根据所述的运行时间以及数据规模确定原子数据加载效率。如表8所示,原子任务A的单位数据的加载效率=任务A的运行时间/数据规模,即任务A的加载效率是1.5*10-7s/B;同理:任务B的加载效率是1.6*10-3。
加载时间确定单元4043,用于根据所述的原子数据加载效率以及原子生成记录确定所述组合任务的加载完成时间。
时间区间获取单元4044,用于获取所述原子任务的到达时间区间。在具体的实施方式中,当前系统中存储有原子任务的到达时间区间,原子任务到达时间区间分布的描述如表9所示,具体组成如表10所示。
在具体的实施方式中,从原子任务到达时间分布中获取相同目标表,且未到达原子的历史到达情况。根据完成时刻和待到达的原子任务时间区间分布,计算完成时刻和完成时间区间的关系。
资源消耗获取单元4045,用于当所述组合任务的加载完成时间在所述的到达时间区间内时,获取所述原子任务的资源消耗。
当前系统中存储有组合任务加载记录,组合任务加载记录的描述如表4所示,其具体组成如表5所示。从表5中,可以直接得到原子任务的数据规模、CPU资源消耗、IO资源消耗。如表11所示,原子任务的单位数据资源消耗=资源使用情况/数据规模。如任务A的原子任务单位数据CPU资源消耗=1*10-10,IO资源消耗=9.7*10-4。同理任务B的资源消耗情况如表11所示。
所需资源确定单元4046,用于根据所述的资源消耗以及原子生成记录确定所述组合任务的加载所需资源。
图15为加载模块405的结构框图,由图15可知,该加载模块405具体包括:
使用率确定单元4051,用于根据所述加载所需资源确定所述组合任务加载所需的CPU使用率以及IO使用率;
第一判断单元4052,用于判断所述组合任务加载所需的CPU使用率是否超出当前系统的CPU使用上限;
第二判断单元4053,用于当所述的第一判断单元判断为否时,继续判断所述组合任务加载所需的IO使用率是否超出当前系统的IO使用上限;
组合任务加载单元4054,用于当所述的第二判断单元判断为否时,加载所述的组合任务。
图12为组合任务加载装置400的实施方式二的结构框图,由图12可知,该组合任务加载装置400在实施方式二中还包括:
运行时间获取模块406,用于当所述IO判断模块判断为是时,获取所述原子任务的运行时间、资源消耗。
在具体的实施方式中,当前系统中存储有原子任务的组合任务加载记录,组合任务加载记录的描述如表4所示,其具体组成如表5所示。由表5中的开始加载时间、结束加载时间可以确定出原子任务的运行时间。从表5中,可以直接得到原子任务的数据规模、CPU资源消耗、IO资源消耗。如表11所示,原子任务的单位数据资源消耗=资源使用情况/数据规模。如任务A的原子任务单位数据CPU资源消耗=1*10-10,IO资源消耗=9.7*10-4。同理任务B的资源消耗情况如表11所示。
原子属性偏向确定模块407,用于根据所述的运行时间、资源消耗确定所述原子任务的属性偏向。
如表12所示,任务A运行时间是150秒,在此期间消耗了CPU0.1s和完成了967,930次IO操作,涉及数据规模达987,822,080B,因此,该任务的CPU消耗时间/运行时间的占比是0.06%;任务B运行时间是2441秒,在此期间消耗了CPU748s和完成了34,963,845次IO操作,涉及数据规模达1,505,280B,因此,该任务的CPU消耗时间/运行时间的占比是30.6%。通过对比任务A和任务B的数据规模、CPU消耗时间/运行时间占比,可以界定任务A属性偏向IO,属于IO型;而任务B属性偏向CPU,属于CPU型。基于上述:可以通过任务的CPU消耗时间/运行时间的占比来决策原子任务的属性偏向,具体占比标准需根据实际应用特点来区别对待。
组合属性偏向确定模块408,用于根据所述原子任务的属性偏向确定所述组合任务的属性偏向;
第一属性偏向判断模块409,用于判断所述组合任务的属性偏向是否为CPU型;
组合任务加载模块410,还用于当所述的第一属性偏向判断模块判断为是时,加载所述的组合任务。
图13为本发明实施例提供的一种数据的动态加载处理系统中组合任务加载装置400的实施方式三的结构框图,由图13可知,该组合任务加载装置在实施方式三中具体包括:
第二IO判断模块411,用于当所述的CPU判断模块判断为是时,根据所述的即时IO使用率、当前系统的IO使用上限继续判断所述的即时IO使用率是否饱和;
资源消耗获取模块412,用于当所述的第二IO判断模块判断为否时,获取所述原子任务的运行时间、资源消耗。在具体的实施方式中,当前系统中存储有原子任务的组合任务加载记录,组合任务加载记录的描述如表4所示,其具体组成如表5所示。由表5中的开始加载时间、结束加载时间可以确定出原子任务的运行时间。从表5中,可以直接得到原子任务的CPU资源消耗、IO资源消耗。
第二属性偏向判断模块413,用于判断所述组合任务的属性偏向是否为IO型;
组合任务加载模块410,还用于当所述的第二属性偏向判断模块判断为是时,当判断为是时,加载所述的组合任务。
如上即为本发明提供的一种数据的动态加载处理系统,基于历史ETL任务加载情况,计算获得原子属性偏向、单位数据规模数据加载效率、CPU使用率和IO使用率,动态采集系统CPU和IO使用情况,根据以上决策信息动态地组合原子生成并加载ETL任务。
下面结合具体的实施例,详细介绍本发明的技术方案。图8为本发明提供的一种数据的动态加载处理方法在具体实例中的流程图,由图8可知,在该实施例中,该方法具体包括:
S1:接收到达的原子任务(原子任务格式定义如:ATOM_S-TBL_T-TBL_YYYYMMDD,S-TBL表示源表、T-TBL表示目标表、YYYYMMDD表示加载日期),汇集T-TBL相同的原子任务集。
S2:接收指令(指令格式如:<ATOM_S1-TBL_T-TBL_YYYYMMDD,ATOM_S2-TBL_T-TBL_YYYYMMDD,ATOM_S3-TBL_T-TBL_YYYYMMDD>)。
S3:获取系统即时CPU和IO的使用率(如:CPU使用率为59%,IO使用率为80%)。
S4:根据获取的即时CPU和IO使用率,判定系统资源饱和度,即判断系统的CPU和IO是否同时不饱和,若是,则进入步骤S5;反之,则进入步骤S13。
S5:获取原子加载效率。原子加载效率来源如下:读取组合任务加载记录,计算原子单位数据加载效率。如任务A的单位数据的加载效率=任务A运行时间/数据规模,即任务A的加载效率是1.5*10-7s/B;同理:任务B的加载效率是1.6*10-3。
S6:根据所述原子加载效率以及原子生成记录,计算当前组合任务加载完成时刻。
组合任务加载完成时刻的来源如下:接收消息(包括本已接收的原子任务集),读取原子生成记录,获取该原子数据规模,再读取存储原子单位数据规模加载效率信息,计算得出组合任务加载时间,再读取原子任务到达时间分布情况,比较组合任务完成时间一定范围内是否有其它原子任务到达,以决策是否等待后续原子任务到达,具体判断标准视各应用实际情况而定。
S7:访问原子任务到达时间分布,获取相同目标表,且未到达原子的历史到达情况。
S8:根据所述完成时刻和待到达的原子任务时间区间分布,计算完成时刻和完成时间区间的关系。
S9:检查完成时刻是否在完成时间允许区间范围内,若是,则进入步骤S10;若否,则进入步骤S22。
S10:获取原子单位数据规模资源使用情况。
S11:根据所述资源使用情况,访问原子生成记录,计算装置201预计算当前组合任务加载所需资源。
S12:根据所述组合任务加载所需资源,计算系统资源CPU或IO使用情况。
S13:决根据所述动态计算的系统CPU或IO使用率,检查是否达到系统上限,若否,进入步骤S14;否则,进入步骤S22。
S14:组合原子任务,进行数据加载。
S15:判定系统资源饱和度,若系统的CPU和IO同时饱和,则进入步骤S22;反之,则进入步骤S16。
S16:判定系统资源饱和度,若系统的CPU饱和,而IO不饱和,则进入步骤S17;反之,则进入步骤S19。
S17:获取原子属性偏向。读取组合任务加载记录,计算原子的属性偏向(或偏向IO或偏向CPU)。如任务A运行时间是150秒,在此期间消耗了CPU0.1s和完成了967,930次IO操作,涉及数据规模达987,822,080B,因此,该任务的CPU消耗时间/运行时间的占比是0.06%;任务B运行时间是2441秒,在此期间消耗了CPU748s和完成了34,963,845次IO操作,涉及数据规模达1,505,280B,因此,该任务的CPU消耗时间/运行时间的占比是30.6%。通过对比任务A和任务B的数据规模、CPU消耗时间/运行时间占比,我们可以界定任务A属性偏向IO,属于IO型;而任务B属性偏向CPU,属于CPU型。基于上述:可以通过任务的CPU消耗时间/运行时间的占比来决策原子任务的属性偏向,具体占比标准需根据实际应用特点来区别对待。
S18:根据组合任务所述原子任务属性偏向,确定本组合任务属性偏向,若是IO型,则进入步骤S14;反之,则进入步骤S22。
S19:判定系统资源饱和度,若系统的CPU不饱和,而IO饱和,则进入步骤S20。
S20:获取原子属性偏向。
S21:根据组合任务所述原子任务属性偏向,确定本组合任务属性偏向,若是CPU型,则进入步骤S14;反之,则进入步骤S22。
S22:提示系统繁忙,不再执行数据加载,恢复组合任务中的原子到上游待加载的原子任务集中,以备下次处理。
综上所述,本发明提出的一种数据的动态加载处理方法及系统,调整开发模式,先通过原子任务的开发,再对其进行动态组合,使得ETL任务具备较高的灵活性;实现原子任务较高层次的复用度;动态组合任务加载,做到系统资源得以充分的利用,最大程度地优化提升数据仓库对外提供服务质量。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一般计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
本领域技术人员还可以了解到本发明实施例列出的各种功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种数据的动态加载处理方法,其特征是,所述的方法具体包括:
获取当前系统的待加载的原子任务;
根据所述的原子任务生成组合任务;
动态采集当前系统的即时中央处理器CPU使用率、即时输入/输出IO使用率;
根据所述的即时CPU使用率、即时IO使用率加载所述的组合任务,该步骤包括:获取当前系统的CPU使用上限以及IO使用上限;根据所述的即时CPU使用率、当前系统的CPU使用上限判断所述的即时CPU使用率是否饱和;当判断为否时,根据所述的即时IO使用率、当前系统的IO使用上限继续判断所述的即时IO使用率是否饱和;当判断为否时,确定所述组合任务的加载所需资源;
其中,确定所述组合任务的加载所需资源包括:获取所述原子任务的原子生成记录、运行时间以及数据规模;根据所述的运行时间以及数据规模确定原子数据加载效率;根据所述的原子数据加载效率以及原子生成记录确定所述组合任务的加载完成时间;获取所述原子任务的到达时间区间;当所述组合任务的加载完成时间在所述的到达时间区间内时,获取所述原子任务的资源消耗;根据所述的资源消耗以及原子生成记录确定所述组合任务的加载所需资源。
2.根据权利要求1所述的方法,其特征是,根据所述的原子任务生成组合任务具体包括:
确定所述原子任务的目标表;
确定所述原子任务的源表;
根据所述原子任务的源表以及目标表对所述的原子任务进行组合,生成组合任务。
3.根据权利要求2所述的方法,其特征是,根据所述的即时CPU使用率、即时IO使用率加载所述的组合任务还包括:
根据所述的加载所需资源、所述的CPU使用上限以及IO使用上限加载所述的组合任务。
4.根据权利要求3所述的方法,其特征是,根据所述的加载所需资源、所述的CPU使用上限以及IO使用上限加载所述的组合任务具体包括:
根据所述加载所需资源确定所述组合任务加载所需的CPU使用率以及IO使用率;
判断所述组合任务加载所需的CPU使用率是否超出当前系统的CPU使用上限;
当判断为否时,继续判断所述组合任务加载所需的IO使用率是否超出当前系统的IO使用上限;
当判断为否时,加载所述的组合任务。
5.根据权利要求2所述的方法,其特征是,根据所述的即时CPU使用率、即时IO使用率加载所述的组合任务还包括:
当所述的即时IO使用率饱和时,获取所述原子任务的运行时间、资源消耗;
根据所述的运行时间、资源消耗确定所述原子任务的属性偏向;
根据所述原子任务的属性偏向确定所述组合任务的属性偏向;
判断所述组合任务的属性偏向是否为CPU型;
当判断为是时,加载所述的组合任务。
6.根据权利要求2所述的方法,其特征是,根据所述的即时CPU使用率、即时IO使用率加载所述的组合任务还包括:
当所述的即时CPU使用率饱和时,根据所述的即时IO使用率、当前系统的IO使用上限继续判断所述的即时IO使用率是否饱和;
当判断为否时,获取所述原子任务的运行时间、资源消耗;
根据所述的运行时间、资源消耗确定所述原子任务的属性偏向;
根据所述原子任务的属性偏向确定所述组合任务的属性偏向;
判断所述组合任务的属性偏向是否为IO型;
当判断为是时,加载所述的组合任务。
7.一种数据的动态加载处理系统,其特征是,所述的系统具体包括:
原子任务获取装置,用于获取当前系统的待加载的原子任务;
组合任务生成装置,用于根据所述的原子任务生成组合任务;
即时使用率采集装置,用于动态采集当前系统的即时中央处理器CPU使用率、即时输入/输出IO使用率;
组合任务加载装置,用于根据所述的即时CPU使用率、即时IO使用率加载所述的组合任务,所述的组合任务加载装置包括:使用上限获取模块,用于获取当前系统的CPU使用上限以及IO使用上限;CPU判断模块,用于根据所述的即时CPU使用率、当前系统的CPU使用上限判断所述的即时CPU使用率是否饱和;第一IO判断模块,用于当所述的CPU判断模块判断为否时,根据所述的即时IO使用率、当前系统的IO使用上限继续判断所述的即时IO使用率是否饱和;资源确定模块,用于当所述的IO判断模块判断为否时,确定所述组合任务的加载所需资源;
其中,所述资源确定模块具体包括:数据获取单元,用于获取所述原子任务的原子生成记录、运行时间以及数据规模;加载效率确定单元,用于根据所述的运行时间以及数据规模确定原子数据加载效率;加载时间确定单元,用于根据所述的原子数据加载效率以及原子生成记录确定所述组合任务的加载完成时间;时间区间获取单元,用于获取所述原子任务的到达时间区间;资源消耗获取单元,用于当所述组合任务的加载完成时间在所述的到达时间区间内时,获取所述原子任务的资源消耗;所需资源确定单元,用于根据所述的资源消耗以及原子生成记录确定所述组合任务的加载所需资源。
8.根据权利要求7所述的系统,其特征是,所述的组合任务生成装置具体包括:
目标表确定模块,用于确定所述原子任务的目标表;
源表确定模块,用于确定所述原子任务的源表;
组合模块,用于根据所述原子任务的源表以及目标表对所述的原子任务进行组合,生成组合任务。
9.根据权利要求8所述的系统,其特征是,所述的组合任务加载装置还包括:
加载模块,用于根据所述的加载所需资源、所述的CPU使用上限以及IO使用上限加载所述的组合任务。
10.根据权利要求9所述的系统,其特征是,所述的加载模块具体包括:
使用率确定单元,用于根据所述加载所需资源确定所述组合任务加载所需的CPU使用率以及IO使用率;
第一判断单元,用于判断所述组合任务加载所需的CPU使用率是否超出当前系统的CPU使用上限;
第二判断单元,用于当所述的第一判断单元判断为否时,继续判断所述组合任务加载所需的IO使用率是否超出当前系统的IO使用上限;
组合任务加载单元,用于当所述的第二判断单元判断为否时,加载所述的组合任务。
11.根据权利要求7所述的系统,其特征是,所述的组合任务加载装置还包括:
运行时间获取模块,用于当所述第一IO判断模块判断为是时,获取所述原子任务的运行时间、资源消耗;
原子属性偏向确定模块,用于根据所述的运行时间、资源消耗确定所述原子任务的属性偏向;
组合属性偏向确定模块,用于根据所述原子任务的属性偏向确定所述组合任务的属性偏向;
第一属性偏向判断模块,用于判断所述组合任务的属性偏向是否为CPU型;
组合任务加载模块,用于当所述的第一属性偏向判断模块判断为是时,加载所述的组合任务。
12.根据权利要求7所述的系统,其特征是,所述的组合任务加载装置还包括:
第二IO判断模块,用于当所述的CPU判断模块判断为是时,根据所述的即时IO使用率、当前系统的IO使用上限继续判断所述的即时IO使用率是否饱和;
资源消耗获取模块,用于当所述的第二IO判断模块判断为否时,获取所述原子任务的运行时间、资源消耗;
第二属性偏向判断模块,用于判断所述组合任务的属性偏向是否为IO型;
组合任务加载模块,用于当所述的第二属性偏向判断模块判断为是时,加载所述的组合任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410252721.1A CN104008178B (zh) | 2014-06-09 | 2014-06-09 | 一种数据的动态加载处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410252721.1A CN104008178B (zh) | 2014-06-09 | 2014-06-09 | 一种数据的动态加载处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104008178A CN104008178A (zh) | 2014-08-27 |
CN104008178B true CN104008178B (zh) | 2017-07-14 |
Family
ID=51368835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410252721.1A Active CN104008178B (zh) | 2014-06-09 | 2014-06-09 | 一种数据的动态加载处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104008178B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708481B (zh) * | 2015-07-30 | 2021-06-29 | 北京京东尚科信息技术有限公司 | 一种控制任务执行的方法 |
CN105930178B (zh) * | 2015-11-12 | 2018-12-28 | 中国银联股份有限公司 | 一种可配置的参数动态装载方法及系统 |
CN109634812B (zh) * | 2018-12-11 | 2022-04-05 | 厦门服云信息科技有限公司 | Linux系统的进程CPU占用率控制方法、终端设备及存储介质 |
CN111552730B (zh) * | 2020-04-28 | 2024-01-26 | 杭州数梦工场科技有限公司 | 数据分发方法、装置、电子设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533417A (zh) * | 2009-04-28 | 2009-09-16 | 阿里巴巴集团控股有限公司 | 一种实现etl调度的方法及系统 |
CN102117306A (zh) * | 2010-01-04 | 2011-07-06 | 阿里巴巴集团控股有限公司 | Etl数据处理过程的监控方法及其系统 |
CN102663114A (zh) * | 2012-04-17 | 2012-09-12 | 中国人民大学 | 面向并发olap的数据库查询处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526521B2 (en) * | 2003-07-11 | 2009-04-28 | At&T Intellectual Property I, L.P. | Multi-user database system and method for resource usage tracking |
-
2014
- 2014-06-09 CN CN201410252721.1A patent/CN104008178B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533417A (zh) * | 2009-04-28 | 2009-09-16 | 阿里巴巴集团控股有限公司 | 一种实现etl调度的方法及系统 |
CN102117306A (zh) * | 2010-01-04 | 2011-07-06 | 阿里巴巴集团控股有限公司 | Etl数据处理过程的监控方法及其系统 |
CN102663114A (zh) * | 2012-04-17 | 2012-09-12 | 中国人民大学 | 面向并发olap的数据库查询处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104008178A (zh) | 2014-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xie et al. | Spatial-temporal disparities, saving potential and influential factors of industrial land use efficiency: A case study in urban agglomeration in the middle reaches of the Yangtze River | |
CN105005570B (zh) | 基于云计算的海量智能用电数据挖掘方法及装置 | |
CN104008178B (zh) | 一种数据的动态加载处理方法及系统 | |
CN105446281B (zh) | 工艺腔室的派货方法和系统 | |
CN102118261A (zh) | 一种数据采集的方法、数据采集装置及网管设备 | |
CN107861796A (zh) | 一种支持云数据中心能耗优化的虚拟机调度方法 | |
CN103020763B (zh) | 基于关系链的作业车间调度关键外协工序辨识方法 | |
CN102467525A (zh) | 单据关联方法及系统 | |
CN103677960A (zh) | 一种能耗约束的虚拟机博弈重放置方法 | |
CN102169491A (zh) | 一种多数据集中重复记录动态检测方法 | |
CN103279505A (zh) | 一种基于语义的海量数据处理方法 | |
CN102915344A (zh) | 一种sql语句处理方法及装置 | |
CN106598738A (zh) | 一种计算机集群系统及其并行计算方法 | |
CN107784039A (zh) | 一种数据加载方法、装置及系统 | |
CN104111875B (zh) | 云数据中心新增任务数动态控制装置、系统及方法 | |
CN108446989A (zh) | 手续费确定方法及终端设备 | |
CN103365923A (zh) | 用于评估数据库的分区方案的方法和装置 | |
CN104239520B (zh) | 一种基于历史信息的hdfs数据块放置策略 | |
CN102760073A (zh) | 一种任务调度方法、系统及装置 | |
CN207764844U (zh) | 一种数据处理系统 | |
CN105446812A (zh) | 一种多任务调度配置方法 | |
CN112086178A (zh) | 医护自动化排班方法、装置、计算机可读存储介质及设备 | |
CN103645948A (zh) | 一种面向数据密集型及依赖关系的并行计算方法 | |
CN103530742B (zh) | 提高排程运算速度的方法及装置 | |
CN103970854B (zh) | Sap ecc端与sap bw端之间增量凭证信息同步方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |