CN112487004A - 基于数据血缘自动控制任务的方法、装置、介质及系统 - Google Patents
基于数据血缘自动控制任务的方法、装置、介质及系统 Download PDFInfo
- Publication number
- CN112487004A CN112487004A CN202011348725.1A CN202011348725A CN112487004A CN 112487004 A CN112487004 A CN 112487004A CN 202011348725 A CN202011348725 A CN 202011348725A CN 112487004 A CN112487004 A CN 112487004A
- Authority
- CN
- China
- Prior art keywords
- data
- task
- data task
- execution
- current
- 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
Links
Images
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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
Abstract
本发明涉及数据开发的数据任务控制处理技术领域,具体提供一种基于数据血缘自动控制任务的方法、装置、介质以及系统,旨在解决如何基于数据血缘自动控制数据任务的执行处理,保证数据处理正确性、准确性的技术问题。为此,本发明的方法包括:自动识别数据任务中需要使用的数据并生成数据血缘关系,且提供当前数据任务依赖的所有上游数据任务;设置并根据当前数据任务实际依赖的上游数据任务的时间和数据关系;在时间点时判断上游数据任务执行状态,执行当前数据任务。本发明能够保证数据处理阶段运行时候的数据准确性和正确性,避免由于数据出错或缺失等情况导致整个计算机系统或者数据处理系统崩溃或者停止运行,保证了系统性能的稳定性。
Description
技术领域
本发明涉及数据开发的数据任务控制处理技术领域,具体涉及一种基于数据血缘自动控制任务的方法、装置、介质以及系统。
背景技术
大数据环境下,各式各样的数据被存储在不同的业务系统中,需要通过数据开发建立和管理大数据平台,将数据进行汇集、进行部分处理后存放于数据仓库、进而提供对外使用等等。而数据抽取及后续处理,都是通过一份份的数据任务定期执行并达成预期结果的。现有技术中,当前数据任务的定期执行,是通过预先设置的固定的执行时间/频率进行周期性的调度而执行的,但对与大数据平台中的数据任务而言,数据任务之间并不孤立,往往一个数据任务中的某个或某些数据需要用到其他数据任务中的某个或某些数据。一旦该当前数据任务到达预先设置的固定的执行时间或/频率直接执行,若其需要用到的其他数据任务未完成或出现错误则其中当前数据任务需要的数据将会缺失而影响当前数据任务正常、正确执行、甚至执行过程中数据处理失败。
由此,需要在当前任务执行时考虑到其需要的上游任务的数据,基于上游任务的执行情况尤其是其生成数据的情况,在大数据平台的数据开发中自动控制当前任务的执行。
发明内容
为了克服上述缺陷,提出了本发明,以解决或至少部分地解决如何基于数据血缘自动控制数据任务的执行处理,能够保证数据处理阶段运行时候的数据准确性和正确性,避免由于数据出错或缺失等情况导致整个计算机系统或者数据处理系统崩溃或者停止运行,即保证了系统性能的稳定性。本发明提供了一种基于数据血缘自动控制任务的方法、装置、介质以及数据处理的控制系统。
第一方面,提供一种基于数据血缘自动控制任务的方法,所述方法包括:
自动识别数据任务中需要使用的数据并生成数据血缘关系;
在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务;
设置当前数据任务实际依赖的上游数据任务的时间和数据关系;
根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态;
根据所述执行状态执行当前数据任务。
其中,所述自动识别包括:根据每个数据任务在执行时需要读写的数据表,确定所述数据任务依赖和被依赖的数据任务;
其中,所述数据任务读的数据为所述数据任务依赖的上游数据任务;
其中,所述数据任务写的数据为依赖所述数据任务的下游数据任务;
所述数据血缘关系包括:每个数据任务依赖的上游数据任务以及依赖所述数据任务的下游数据任务的数据血缘地图。
其中,“所述数据血缘关系”还包括:每个数据任务执行时需要一个或多个数据,需要的所述数据来自不同的上游数据任务执行成功后输出的数据;
在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务具体包括:提供当前数据任务对应的数据血缘地图中数据和任务的完整数据血缘链路;
设置当前数据任务实际依赖的上游数据任务的时间和数据关系具体包括:
根据当前数据任务对应的所述完整数据血缘链路,确定当前数据任务需要的每个数据实际对应依赖的一个或多个上游数据任务,以及实际对应依赖的上游数据任务的执行时间。
其中,“根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态”,具体包括:
每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态。
其中,“每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态”,具体包括:
每次执行当前数据任务达到一个设置的时间点时,所述当前数据任务先对接收的需要读取的所述数据对应依赖的上游数据任务的推送来的最后一条状态消息进行判断;
分析所述状态消息中对应的上游数据任务的执行时间是否已经结束,以及执行状态为成功、失败或正在执行中;
其中,需要读取的所述数据对应依赖的上游数据任务的执行状态发生变化时,将推送最新执行的状态消息至所述当前数据任务。
其中,“根据所述执行状态执行当前数据任务”,具体包括:
若所有上游数据任务的最后一条状态消息中执行状态为“执行成功”,则表明当前数据任务需要读取的数据已经更新成功,直接执行;
若上游数据任务的最后一条状态消息中执行状态为“执行失败”,则表明当前任务需要读取的数据未更新成功,直接自置为“失败状态”,本次任务停止执行;
若上游数据任务的最后一条状态消息中执行状态为“执行中”,则当前数据任务需要读取的数据正在更新阶段,进入等待状态,并等待预先设置的时间长度;
其中,如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行成功”,则当前数据任务根据接收的更新的最后一条状态消息中执行状态为所述“执行成功”直接执行;
如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行失败”,或者,如果超过预先设置的时间长度仍然未接收到上游数据任务的更新的最后一条状态消息,则当前数据任务直接自置为“失败状态”,所述当前数据任务停止执行。
其中,还包括:
如果当前数据任务自置为“失败状态”,根据预先设置的自动重跑,由当前数据任务发出激活指示,激活需要读取的所述数据依赖的上游数据任务重新执行;
当所述上游数据任务重新执行后推送至当前数据任务的最后一条状态消息中执行状态为“执行成功”,且根据预先设置的所述自动重跑,当前数据任务接收到所述状态消息后重新执行。
第二方面,提供一种计算机可读存储介质,所述存储介质中存储有多条程序代码,所述程序代码适用于由处理器加载并运行以执行前述中任一项所述的基于数据血缘自动控制任务的方法。
第三方面,提供一种控制装置,该处理装置包括处理器和存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行前述中任一项所述的基于数据血缘自动控制任务的方法。
第四方面,提供一种基于数据血缘自动控制任务的系统,包括:
自动识别模块,其用于自动识别数据任务中需要使用的数据并生成数据血缘关系;
提供上游数据任务模块,其用于在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务;
设置模块,其用于设置当前数据任务实际依赖的上游数据任务的时间和数据关系;
判断模块,其用于根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态;
执行模块,其用于根据所述执行状态执行当前数据任务。
其中,自动识别模块执行的操作具体包括:根据每个数据任务在执行时需要读写的数据表,确定所述数据任务依赖和被依赖的数据任务;
其中,所述数据任务读的数据为所述数据任务依赖的上游数据任务;
其中,所述数据任务写的数据为依赖所述数据任务的下游数据任务;
所述数据血缘关系包括:每个数据任务依赖的上游数据任务以及依赖所述数据任务的下游数据任务的数据血缘地图。
其中,“所述数据血缘关系”还包括:每个数据任务执行时需要一个或多个数据,需要的所述数据来自不同的上游数据任务执行成功后输出的数据;
提供上游数据任务模块执行的操作具体包括:提供当前数据任务对应的数据血缘地图中数据和任务的完整数据血缘链路;
设置模块执行的操作具体包括:根据当前数据任务对应的所述完整数据血缘链路,确定当前数据任务需要的每个数据实际对应依赖的一个或多个上游数据任务,以及实际对应依赖的上游数据任务的执行时间。
其中,判断模块执行的具体操作包括:
每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态。
其中,“每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态”,具体包括:
每次执行当前数据任务达到一个设置的时间点时,所述当前数据任务先对接收的需要读取的所述数据对应依赖的上游数据任务的推送来的最后一条状态消息进行判断;
分析所述状态消息中对应的上游数据任务的执行时间是否已经结束,以及执行状态为成功、失败或正在执行中;
其中,需要读取的所述数据对应依赖的上游数据任务的执行状态发生变化时,将推送最新执行的状态消息至所述当前数据任务。
其中,执行模块执行的具体操作包括:
若所有上游数据任务的最后一条状态消息中执行状态为“执行成功”,则表明当前数据任务需要读取的数据已经更新成功,直接执行;
若上游数据任务的最后一条状态消息中执行状态为“执行失败”,则表明当前任务需要读取的数据未更新成功,直接自置为“失败状态”,本次任务停止执行;
若上游数据任务的最后一条状态消息中执行状态为“执行中”,则当前数据任务需要读取的数据正在更新阶段,进入等待状态,并等待预先设置的时间长度;
其中,如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行成功”,则当前数据任务根据接收的更新的最后一条状态消息中执行状态为所述“执行成功”直接执行;
如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行失败”,或者,如果超过预先设置的时间长度仍然未接收到上游数据任务的更新的最后一条状态消息,则当前数据任务直接自置为“失败状态”,所述当前数据任务停止执行。
其中,还包括:
如果当前数据任务自置为“失败状态”,根据预先设置的自动重跑,由当前数据任务发出激活指示,激活需要读取的所述数据依赖的上游数据任务重新执行;
当所述上游数据任务重新执行后推送至当前数据任务的最后一条状态消息中执行状态为“执行成功”,且根据预先设置的所述自动重跑,当前数据任务接收到所述状态消息后重新执行。
方案1、一种基于数据血缘自动控制任务的方法,其特征在于,所述方法包括:
自动识别数据任务中需要使用的数据并生成数据血缘关系;
在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务;
设置当前数据任务实际依赖的上游数据任务的时间和数据关系;
根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态;
根据所述执行状态执行当前数据任务。
方案2、如方案1所述的方法,其特征在于,
所述自动识别包括:根据每个数据任务在执行时需要读写的数据表,确定所述数据任务依赖和被依赖的数据任务;
其中,所述数据任务读的数据为所述数据任务依赖的上游数据任务;
其中,所述数据任务写的数据为依赖所述数据任务的下游数据任务;
所述数据血缘关系包括:每个数据任务依赖的上游数据任务以及依赖所述数据任务的下游数据任务的数据血缘地图。
方案3、如方案2所述的方法,其特征在于,
“所述数据血缘关系”还包括:每个数据任务执行时需要一个或多个数据,需要的所述数据来自不同的上游数据任务执行成功后输出的数据;
在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务具体包括:提供当前数据任务对应的数据血缘地图中数据和任务的完整数据血缘链路;
设置当前数据任务实际依赖的上游数据任务的时间和数据关系具体包括:
根据当前数据任务对应的所述完整数据血缘链路,确定当前数据任务需要的每个数据实际对应依赖的一个或多个上游数据任务,以及实际对应依赖的上游数据任务的执行时间。
方案4、如方案1所述的方法,其特征在于,“根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态”,具体包括:
每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态。
方案5、如方案4所述的方法,其特征在于,“每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态”,具体包括:
每次执行当前数据任务达到一个设置的时间点时,所述当前数据任务先对接收的需要读取的所述数据对应依赖的上游数据任务的推送来的最后一条状态消息进行判断;
分析所述状态消息中对应的上游数据任务的执行时间是否已经结束,以及执行状态为成功、失败或正在执行中;
其中,需要读取的所述数据对应依赖的上游数据任务的执行状态发生变化时,将推送最新执行的状态消息至所述当前数据任务。
方案6、如方案5所述的方法,其特征在于,“根据所述执行状态执行当前数据任务”,具体包括:
若所有上游数据任务的最后一条状态消息中执行状态为“执行成功”,则表明当前数据任务需要读取的数据已经更新成功,直接执行;
若上游数据任务的最后一条状态消息中执行状态为“执行失败”,则表明当前任务需要读取的数据未更新成功,直接自置为“失败状态”,本次任务停止执行;
若上游数据任务的最后一条状态消息中执行状态为“执行中”,则当前数据任务需要读取的数据正在更新阶段,进入等待状态,并等待预先设置的时间长度;
其中,如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行成功”,则当前数据任务根据接收的更新的最后一条状态消息中执行状态为所述“执行成功”直接执行;
如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行失败”,或者,如果超过预先设置的时间长度仍然未接收到上游数据任务的更新的最后一条状态消息,则当前数据任务直接自置为“失败状态”,所述当前数据任务停止执行。
方案7、如方案5所述的方法,其特征在于,还包括:
如果当前数据任务自置为“失败状态”,根据预先设置的自动重跑,由当前数据任务发出激活指示,激活需要读取的所述数据依赖的上游数据任务重新执行;
当所述上游数据任务重新执行后推送至当前数据任务的最后一条状态消息中执行状态为“执行成功”,且根据预先设置的所述自动重跑,当前数据任务接收到所述状态消息后重新执行。
方案8、一种计算机可读存储介质,其特征在于,所述存储介质中存储有多条程序代码,所述程序代码适用于由处理器加载并运行以执行方案1至7中任一项所述的基于数据血缘自动控制任务的方法。
方案9、一种控制装置,该处理装置包括处理器和存储装置,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行方案1至7中任一项所述的基于数据血缘自动控制任务的方法。
方案10、一种基于数据血缘自动控制任务的系统,其特征在于,包括:
自动识别模块,其用于自动识别数据任务中需要使用的数据并生成数据血缘关系;
提供上游数据任务模块,其用于在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务;
设置模块,其用于设置当前数据任务实际依赖的上游数据任务的时间和数据关系;
判断模块,其用于根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态;
执行模块,其用于根据所述执行状态执行当前数据任务。
方案11、如方案10所述的系统,其特征在于,
自动识别模块执行的操作具体包括:根据每个数据任务在执行时需要读写的数据表,确定所述数据任务依赖和被依赖的数据任务;
其中,所述数据任务读的数据为所述数据任务依赖的上游数据任务;
其中,所述数据任务写的数据为依赖所述数据任务的下游数据任务;
所述数据血缘关系包括:每个数据任务依赖的上游数据任务以及依赖所述数据任务的下游数据任务的数据血缘地图。
方案12、如方案11所述的系统,其特征在于,
“所述数据血缘关系”还包括:每个数据任务执行时需要一个或多个数据,需要的所述数据来自不同的上游数据任务执行成功后输出的数据;
提供上游数据任务模块执行的操作具体包括:提供当前数据任务对应的数据血缘地图中数据和任务的完整数据血缘链路;
设置模块执行的操作具体包括:根据当前数据任务对应的所述完整数据血缘链路,确定当前数据任务需要的每个数据实际对应依赖的一个或多个上游数据任务,以及实际对应依赖的上游数据任务的执行时间。
方案13、如方案10所述的系统,其特征在于,判断模块执行的具体操作包括:
每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态。
方案14、如方案13所述的系统,其特征在于,“每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态”,具体包括:
每次执行当前数据任务达到一个设置的时间点时,所述当前数据任务先对接收的需要读取的所述数据对应依赖的上游数据任务的推送来的最后一条状态消息进行判断;
分析所述状态消息中对应的上游数据任务的执行时间是否已经结束,以及执行状态为成功、失败或正在执行中;
其中,需要读取的所述数据对应依赖的上游数据任务的执行状态发生变化时,将推送最新执行的状态消息至所述当前数据任务。
方案15、如方案14所述的系统,其特征在于,执行模块执行的具体操作包括:
若所有上游数据任务的最后一条状态消息中执行状态为“执行成功”,则表明当前数据任务需要读取的数据已经更新成功,直接执行;
若上游数据任务的最后一条状态消息中执行状态为“执行失败”,则表明当前任务需要读取的数据未更新成功,直接自置为“失败状态”,本次任务停止执行;
若上游数据任务的最后一条状态消息中执行状态为“执行中”,则当前数据任务需要读取的数据正在更新阶段,进入等待状态,并等待预先设置的时间长度;
其中,如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行成功”,则当前数据任务根据接收的更新的最后一条状态消息中执行状态为所述“执行成功”直接执行;
如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行失败”,或者,如果超过预先设置的时间长度仍然未接收到上游数据任务的更新的最后一条状态消息,则当前数据任务直接自置为“失败状态”,所述当前数据任务停止执行。
方案16、如方案15所述的系统,其特征在于,还包括:
如果当前数据任务自置为“失败状态”,根据预先设置的自动重跑,由当前数据任务发出激活指示,激活需要读取的所述数据依赖的上游数据任务重新执行;
当所述上游数据任务重新执行后推送至当前数据任务的最后一条状态消息中执行状态为“执行成功”,且根据预先设置的所述自动重跑,当前数据任务接收到所述状态消息后重新执行。
本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:本发明通过自动识别数据任务中需要使用的数据并生成数据血缘关系;在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务;设置当前数据任务实际依赖的上游数据任务的时间和数据关系;根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态;根据所述执行状态执行当前数据任务。由此,能够保证数据处理阶段运行时候的数据准确性和正确性,避免由于数据出错或缺失等情况导致整个计算机系统或者数据处理系统崩溃或者停止运行,即保证了系统性能的稳定性。
附图说明
下面参照附图来描述本发明的具体实施方式,附图中:
图1为根据本发明的基于数据血缘自动控制任务的方法的一个实施例的主要流程图;
图2为根据本发明的方案的当前数据任务对应的数据血缘地图中数据和任务的完整数据血缘链路的一个实施例示意图;
图3为根据本发明的方案的根据执行状态执行当前数据任务的一个实施例的示意图;
图4为根据本发明的基于数据血缘自动控制任务的系统的一个实施例的结构框图。
具体实施方式
下面参照附图来描述本发明的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。
在本发明的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、图像处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。术语“A和/或B”表示所有可能的A与B的组合,比如只是A、只是B或者A和B。术语“至少一个A或B”或者“A和B中的至少一个”含义与“A和/或B”类似,可以包括只是A、只是B或者A和B。单数形式的术语“一个”、“这个”也可以包含复数形式。
这里先解释本发明涉及到的一些术语:
大数据:一般指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。
数据开发:管理、构建/加工数据仓库、大数据平台等。
数据仓库:分析应用数据源的结构化数据环境,其主要研究和解决从数据库中获取信息等问题,其特征在于面向主题、集成性、稳定性和时变性等。
数据抽取:从数据源中抽取数据的过程。
数据任务:与各种数据的处理相关的任务。
现有技术中,大数据平台上的数据开发,对数据任务的控制方式是通过为数据任务定期调度进而执行,即设置固定的执行时间/频率,周期性地调度进而执行。例如:数据任务A1,每天10点运行、每周一4点运行,等等。但对与大数据平台的数据开发来说,各个数据任务之间多数都不是孤立的,而是存在依赖的。上述定期调度、执行的控制方式,往往存在到达当前数据任务执行(运行)时间;由于数据任务之间存在依赖,这导致上述的定时执行方式存在如下问题,假设每天11点运行的某份数据b使用了每天10点运行的数据a,生成数据a的任务正常能够在1小时内运行成功:若数据a在11点半才执行完毕,则数据b的任务执行后,将缺失依赖于数据a的部分数据;若数据a当日执行失败,而数据b的任务仍将在11点运行,则数据b的任务执行后,将缺失依赖于数据a的部分数据。因此,在数据血缘关系的数据任务的执行处理中,难以保证整个数据处理的正确性和准确性。
参阅附图2,本发明是一种基于数据血缘自动控制任务的方案的一个实施例如:上游数据任务1是“把业务系统中的数据每天的充电明细同步到对应的数据仓库ods_oss_prod中”,产生数据1是“充电明细”;上游数据任务2是“把业务系统中的数据每天的订单明细同步到对应的数据仓库ods_oss_prod中”,产生数据2是“订单明细”;当前数据任务通过读取数据1和数据2,是“将充电明细与订单明细数据进行关联合并,形成每天订单充电明细”,每笔订单都能够对应上其充电情况,产生数据3是“订单充电明细”;下游数据任务是“对合并后的订单充电明细进行数据统计,计算出每天/每月的订单量和充电量。”,从而产生数据4是“每天/每月的订单量和充电量”。
当前数据任务的执行时间为11:00,先判断所述需要的数据依赖的上游数据任务执行的时间和执行状态,上游数据任务1和上游数据任务2的开始执行时间为10:00,分别在11:00前发送给当前数据任务的最后一条状态消息为“执行成功”,从而生成数据1“充电明细”和数据2“订单明细”,因此,当前数据任务直接开始正式执行,且在12:00前发送给下游数据任务的最后一条状态消息为“执行成功”,并生成数据3“订单充电明细”,下游数据任务在12:00开始执行,并且执行成功,生成数据4“每天/每月的订单量和充电量”。通过本发明的一种基于数据血缘自动控制任务的方案,能够保证数据处理阶段运行时候的数据准确性和正确性,避免由于数据出错或缺失等情况导致整个计算机系统或者数据处理系统崩溃或者停止运行,即保证了系统性能的稳定性。
下面结合图1所示本发明的一种基于数据血缘自动控制任务的方法的一个实施例的主要流程图,对本发明的实现方式进行描述。
步骤S101,自动识别数据任务中需要使用的数据并生成数据血缘关系;
在一个实施方式中,所述自动识别包括:根据每个数据任务在执行时需要读写的数据表,确定所述数据任务依赖和被依赖的数据任务;
其中,所述数据任务读的数据为所述数据任务依赖的上游数据任务;
其中,所述数据任务写的数据为依赖所述数据任务的下游数据任务;
所述数据血缘关系包括:每个数据任务依赖的上游数据任务以及依赖所述数据任务的下游数据任务的数据血缘地图。
“所述数据血缘关系”还包括:每个数据任务执行时需要一个或多个数据,需要的所述数据来自不同的上游数据任务执行成功后输出的数据;
例如,如图2所示是根据本发明的方案的当前数据任务对应的数据血缘地图中数据和任务的完整数据血缘链路的一个实施例示意图;其中,上游数据任务1是“把业务系统中的数据每天的充电明细同步到对应的数据仓库ods_oss_prod中”,产生数据1是“充电明细”;上游数据任务2是“把业务系统中的数据每天的订单明细同步到对应的数据仓库ods_oss_prod中”,产生数据2是“订单明细”;当前数据任务通过读取数据1和数据2,是“将充电明细与订单明细数据进行关联合并,形成每天订单充电明细”,每笔订单都能够对应上其充电情况,产生数据3是“订单充电明细”;下游数据任务是“对合并后的订单充电明细进行数据统计,计算出每天/每月的订单量和充电量。”,从而产生数据4是“每天/每月的订单量和充电量”。
其中,当前数据任务读取的是数据1和数据2,数据1和数据2分别对应的是上游数据任务1和上游数据任务2写的而产生的;下游数据任务是读取当前数据任务写的数据3,成功完成下游数据任务后,写数据4。
步骤S102,在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务;
在一个实施方式中,提供当前数据任务对应的数据血缘地图中数据和任务的完整数据血缘链路;
步骤S103,设置当前数据任务实际依赖的上游数据任务的时间和数据关系;
在一个实施方式中,根据当前数据任务对应的所述完整数据血缘链路,确定当前数据任务需要的每个数据实际对应依赖的一个或多个上游数据任务,以及实际对应依赖的上游数据任务的执行时间。
例如,上游数据任务1设置开始执行时间为10:00,若执行成功生成数据1能在1小时内执行完成;上游数据任务2设置开始执行时间也为10:00,若执行成功生成数据2也能在1小时内执行完成;当前数据任务执行时间为11:00,,若执行成功当前数据任务也能在1小时内执行完成;下游数据任务执行时间为12:00,若执行成功也能在1小时内执行完成。
步骤S104,根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态;
在一个实施方式中,每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态。
每次执行当前数据任务达到一个设置的时间点时,所述当前数据任务先对接收的需要读取的所述数据对应依赖的上游数据任务的推送来的最后一条状态消息进行判断;
分析所述状态消息中对应的上游数据任务的执行时间是否已经结束,以及执行状态为成功、失败或正在执行中;
其中,需要读取的所述数据对应依赖的上游数据任务的执行状态发生变化时,将推送最新执行的状态消息至所述当前数据任务。
步骤S105,根据所述执行状态执行当前数据任务。
在一个实施方式中,如图3所示,若所有上游数据任务的最后一条状态消息中执行状态为“执行成功”,则表明当前数据任务需要读取的数据已经更新成功,直接执行;
若上游数据任务的最后一条状态消息中执行状态为“执行失败”,则表明当前任务需要读取的数据未更新成功,直接自置为“失败状态”,本次任务停止执行;
若上游数据任务的最后一条状态消息中执行状态为“执行中”,则当前数据任务需要读取的数据正在更新阶段,进入等待状态,并等待预先设置的时间长度;
其中,如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行成功”,则当前数据任务根据接收的更新的最后一条状态消息中执行状态为所述“执行成功”直接执行;
如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行失败”,或者,如果超过预先设置的时间长度仍然未接收到上游数据任务的更新的最后一条状态消息,则当前数据任务直接自置为“失败状态”,所述当前数据任务停止执行。
如果当前数据任务自置为“失败状态”,根据预先设置的自动重跑,由当前数据任务发出激活指示,激活需要读取的所述数据依赖的上游数据任务重新执行;
当所述上游数据任务重新执行后推送至当前数据任务的最后一条状态消息中执行状态为“执行成功”,且根据预先设置的所述自动重跑,当前数据任务接收到所述状态消息后重新执行。
例如,当前数据任务的执行时间为11:00,先判断所述需要的数据依赖的上游数据任务执行的时间和执行状态,上游数据任务1和上游数据任务2的开始执行时间为10:00,分别在11:00前发送给当前数据任务的最后一条状态消息为“执行成功”,从而生成数据1“充电明细”和数据2“订单明细”,因此,当前数据任务直接开始正式执行,且在12:00前发送给下游数据任务的最后一条状态消息为“执行成功”,并生成数据3“订单充电明细”,下游数据任务在12:00开始执行,并且执行成功,生成数据4“每天/每月的订单量和充电量”。
又例如,当前数据任务的执行时间为11:00,先判断所述需要的数据依赖的上游数据任务执行的时间和执行状态,上游数据任务1和上游数据任务2的开始执行时间为10:00,上游数据任务1在11:00前发送给当前数据任务的最后一条状态消息为“执行成功”,上游数据任务2在11:00前发送给当前数据任务的最后一条状态消息为“执行中”,当前数据任务进入等待状态,预先设置的等待时间为10分钟,上游数据任务2在11:10前发送给当前数据任务的最后一条状态消息为“执行成功”,从而当前数据任务生成数据1“充电明细”和数据2“订单明细”,因此,当前数据任务直接开始正式执行,且在12:10前发送给下游数据任务的最后一条状态消息为“执行成功”,并生成数据3“订单充电明细”,下游数据任务在12:10开始执行,并且执行成功,生成数据4“每天/每月的订单量和充电量”。如果上游数据任务2在11:10前发送给当前数据任务的最后一条状态消息为“执行失败”或者上游数据任务2在11:12前未发送给当前数据任务消息,则当前任务直接将自置为“失败状态”,本次任务停止执行。
又例如,当前数据任务的执行时间为11:00,先判断所述需要的数据依赖的上游数据任务执行的时间和执行状态,上游数据任务1和上游数据任务2的开始执行时间为10:00,上游数据任务1在11:00前发送给当前数据任务的最后一条状态消息为“执行成功”,上游数据任务2在11:00前发送给当前数据任务的最后一条状态消息为“执行失败”,则当前任务直接将自置为“失败状态”,本次任务停止执行。重新执行失败的上游数据任务2且推送至当前数据任务的最后一条状态消息为“执行成功”,预先选择支持自动触发重跑,自动重新执行当前数据任务,从而生成数据1“充电明细”和数据2“订单明细”,因此,当前数据任务直接开始正式执行,且在12:00前发送给下游数据任务的最后一条状态消息为“执行成功”,并生成数据3“订单充电明细”,下游数据任务在12:00开始执行,并且执行成功,生成数据4“每天/每月的订单量和充电量”。
下面再结合图4为根据本发明的一种基于数据血缘自动控制任务的系统的一个实施例的结构框图,对本发明的实现进行说明。该系统至少包括:
自动识别模块401,其用于自动识别数据任务中需要使用的数据并生成数据血缘关系;
在一个实施方式中,自动识别模块执行的操作具体包括:根据每个数据任务在执行时需要读写的数据表,确定所述数据任务依赖和被依赖的数据任务;
其中,所述数据任务读的数据为所述数据任务依赖的上游数据任务;
其中,所述数据任务写的数据为依赖所述数据任务的下游数据任务;
所述数据血缘关系包括:每个数据任务依赖的上游数据任务以及依赖所述数据任务的下游数据任务的数据血缘地图。
“所述数据血缘关系”还包括:每个数据任务执行时需要一个或多个数据,需要的所述数据来自不同的上游数据任务执行成功后输出的数据;
例如,如图2所示是根据本发明的方案的当前数据任务对应的数据血缘地图中数据和任务的完整数据血缘链路的一个实施例示意图;其中,上游数据任务1是“把业务系统中的数据每天的充电明细同步到对应的数据仓库ods_oss_prod中”,产生数据1是“充电明细”;上游数据任务2是“把业务系统中的数据每天的订单明细同步到对应的数据仓库ods_oss_prod中”,产生数据2是“订单明细”;当前数据任务通过读取数据1和数据2,是“将充电明细与订单明细数据进行关联合并,形成每天订单充电明细”,每笔订单都能够对应上其充电情况,产生数据3是“订单充电明细”;下游数据任务是“对合并后的订单充电明细进行数据统计,计算出每天/每月的订单量和充电量。”,从而产生数据4是“每天/每月的订单量和充电量”。
其中,当前数据任务读取的是数据1和数据2,数据1和数据2分别对应的是上游数据任务1和上游数据任务2写的而产生的;下游数据任务是读取当前数据任务写的数据3,成功完成下游数据任务后,写数据4。
提供上游数据任务模块402,其用于在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务;
在一个实施方式中,提供当前数据任务对应的数据血缘地图中数据和任务的完整数据血缘链路;
设置模块403,其用于设置当前数据任务实际依赖的上游数据任务的时间和数据关系;
在一个实施方式中,根据当前数据任务对应的所述完整数据血缘链路,确定当前数据任务需要的每个数据实际对应依赖的一个或多个上游数据任务,以及实际对应依赖的上游数据任务的执行时间。
例如,上游数据任务1设置开始执行时间为10:00,若执行成功生成数据1能在1小时内执行完成;上游数据任务2设置开始执行时间也为10:00,若执行成功生成数据2也能在1小时内执行完成;当前数据任务执行时间为11:00,,若执行成功当前数据任务也能在1小时内执行完成;下游数据任务执行时间为12:00,若执行成功也能在1小时内执行完成。
判断模块404,其用于根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态;
在一个实施方式中,每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态。
每次执行当前数据任务达到一个设置的时间点时,所述当前数据任务先对接收的需要读取的所述数据对应依赖的上游数据任务的推送来的最后一条状态消息进行判断;
分析所述状态消息中对应的上游数据任务的执行时间是否已经结束,以及执行状态为成功、失败或正在执行中;
其中,需要读取的所述数据对应依赖的上游数据任务的执行状态发生变化时,将推送最新执行的状态消息至所述当前数据任务。
执行模块406,其用于根据所述执行状态执行当前数据任务。
在一个实施方式中,如图3所示,若所有上游数据任务的最后一条状态消息中执行状态为“执行成功”,则表明当前数据任务需要读取的数据已经更新成功,直接执行;
若上游数据任务的最后一条状态消息中执行状态为“执行失败”,则表明当前任务需要读取的数据未更新成功,直接自置为“失败状态”,本次任务停止执行;
若上游数据任务的最后一条状态消息中执行状态为“执行中”,则当前数据任务需要读取的数据正在更新阶段,进入等待状态,并等待预先设置的时间长度;
其中,如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行成功”,则当前数据任务根据接收的更新的最后一条状态消息中执行状态为所述“执行成功”直接执行;
如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行失败”,或者,如果超过预先设置的时间长度仍然未接收到上游数据任务的更新的最后一条状态消息,则当前数据任务直接自置为“失败状态”,所述当前数据任务停止执行。
如果当前数据任务自置为“失败状态”,根据预先设置的自动重跑,由当前数据任务发出激活指示,激活需要读取的所述数据依赖的上游数据任务重新执行;
当所述上游数据任务重新执行后推送至当前数据任务的最后一条状态消息中执行状态为“执行成功”,且根据预先设置的所述自动重跑,当前数据任务接收到所述状态消息后重新执行。
例如,当前数据任务的执行时间为11:00,先判断所述需要的数据依赖的上游数据任务执行的时间和执行状态,上游数据任务1和上游数据任务2的开始执行时间为10:00,分别在11:00前发送给当前数据任务的最后一条状态消息为“执行成功”,从而生成数据1“充电明细”和数据2“订单明细”,因此,当前数据任务直接开始正式执行,且在12:00前发送给下游数据任务的最后一条状态消息为“执行成功”,并生成数据3“订单充电明细”,下游数据任务在12:00开始执行,并且执行成功,生成数据4“每天/每月的订单量和充电量”。
又例如,当前数据任务的执行时间为11:00,先判断所述需要的数据依赖的上游数据任务执行的时间和执行状态,上游数据任务1和上游数据任务2的开始执行时间为10:00,上游数据任务1在11:00前发送给当前数据任务的最后一条状态消息为“执行成功”,上游数据任务2在11:00前发送给当前数据任务的最后一条状态消息为“执行中”,当前数据任务进入等待状态,预先设置的等待时间为10分钟,上游数据任务2在11:10前发送给当前数据任务的最后一条状态消息为“执行成功”,从而当前数据任务生成数据1“充电明细”和数据2“订单明细”,因此,当前数据任务直接开始正式执行,且在12:10前发送给下游数据任务的最后一条状态消息为“执行成功”,并生成数据3“订单充电明细”,下游数据任务在12:10开始执行,并且执行成功,生成数据4“每天/每月的订单量和充电量”。如果上游数据任务2在11:10前发送给当前数据任务的最后一条状态消息为“执行失败”或者上游数据任务2在11:12前未发送给当前数据任务消息,则当前任务直接将自置为“失败状态”,本次任务停止执行。
又例如,当前数据任务的执行时间为11:00,先判断所述需要的数据依赖的上游数据任务执行的时间和执行状态,上游数据任务1和上游数据任务2的开始执行时间为10:00,上游数据任务1在11:00前发送给当前数据任务的最后一条状态消息为“执行成功”,上游数据任务2在11:00前发送给当前数据任务的最后一条状态消息为“执行失败”,则当前任务直接将自置为“失败状态”,本次任务停止执行。重新执行失败的上游数据任务2且推送至当前数据任务的最后一条状态消息为“执行成功”,预先选择支持自动触发重跑,自动重新执行当前数据任务,从而生成数据1“充电明细”和数据2“订单明细”,因此,当前数据任务直接开始正式执行,且在12:00前发送给下游数据任务的最后一条状态消息为“执行成功”,并生成数据3“订单充电明细”,下游数据任务在12:00开始执行,并且执行成功,生成数据4“每天/每月的订单量和充电量”。
下面描述本发明的技术方案的一个应用场景的例子,以进一步说明本发明的实现方式:在进行某可通过数据血缘自动控制任务的数据开发中,如图2所示:上游数据任务1是“把业务系统中的数据每天的充电明细同步到对应的数据仓库ods_oss_prod中”,产生数据1是“充电明细”;上游数据任务2是“把业务系统中的数据每天的订单明细同步到对应的数据仓库ods_oss_prod中”,产生数据2是“订单明细”;当前数据任务通过读取数据1和数据2,是“将充电明细与订单明细数据进行关联合并,形成每天订单充电明细”,每笔订单都能够对应上其充电情况,产生数据3是“订单充电明细”;下游数据任务是“对合并后的订单充电明细进行数据统计,计算出每天/每月的订单量和充电量。”,从而产生数据4是“每天/每月的订单量和充电量”。
场景一:当前数据任务的执行时间为11:00,先判断所述需要的数据依赖的上游数据任务执行的时间和执行状态,上游数据任务1和上游数据任务2的开始执行时间为10:00,分别在11:00前发送给当前数据任务的最后一条状态消息为“执行成功”,从而生成数据1“充电明细”和数据2“订单明细”,因此,当前数据任务直接开始正式执行,且在12:00前发送给下游数据任务的最后一条状态消息为“执行成功”,并生成数据3“订单充电明细”,下游数据任务在12:00开始执行,并且执行成功,生成数据4“每天/每月的订单量和充电量”。
场景二:当前数据任务的执行时间为11:00,先判断所述需要的数据依赖的上游数据任务执行的时间和执行状态,上游数据任务1和上游数据任务2的开始执行时间为10:00,上游数据任务1在11:00前发送给当前数据任务的最后一条状态消息为“执行成功”,上游数据任务2在11:00前发送给当前数据任务的最后一条状态消息为“执行中”,当前数据任务进入等待状态,预先设置的等待时间为10分钟,上游数据任务2在11:10前发送给当前数据任务的最后一条状态消息为“执行成功”,从而当前数据任务生成数据1“充电明细”和数据2“订单明细”,因此,当前数据任务直接开始正式执行,且在12:10前发送给下游数据任务的最后一条状态消息为“执行成功”,并生成数据3“订单充电明细”,下游数据任务在12:10开始执行,并且执行成功,生成数据4“每天/每月的订单量和充电量”。如果上游数据任务2在11:10前发送给当前数据任务的最后一条状态消息为“执行失败”或者上游数据任务2在11:12前未发送给当前数据任务消息,则当前任务直接将自置为“失败状态”,本次任务停止执行。
场景三:当前数据任务的执行时间为11:00,先判断所述需要的数据依赖的上游数据任务执行的时间和执行状态,上游数据任务1和上游数据任务2的开始执行时间为10:00,上游数据任务1在11:00前发送给当前数据任务的最后一条状态消息为“执行成功”,上游数据任务2在11:00前发送给当前数据任务的最后一条状态消息为“执行失败”,则当前任务直接将自置为“失败状态”,本次任务停止执行。重新执行失败的上游数据任务2且推送至当前数据任务的最后一条状态消息为“执行成功”,预先选择支持自动触发重跑,自动重新执行当前数据任务,从而生成数据1“充电明细”和数据2“订单明细”,因此,当前数据任务直接开始正式执行,且在12:00前发送给下游数据任务的最后一条状态消息为“执行成功”,并生成数据3“订单充电明细”,下游数据任务在12:00开始执行,并且执行成功,生成数据4“每天/每月的订单量和充电量”。
本领域技术人员能够理解的是,本发明实现上述一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
进一步,在本发明的一种计算机可读存储介质的一个实施例中,包括:所述存储介质存储多条程序代码,所述程序代码适用于由处理器加载并运行以执行前述的基于数据血缘自动控制任务的方法。
进一步,在本发明的一种处理装置的一个实施例中,该处理装置包括处理器和存储器,所述存储装置适用于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行前述的基于数据血缘自动控制任务的方法。
进一步,应该理解的是,由于各个模块的设定仅仅是为了说明本发明的系统的功能单元,这些模块对应的物理器件可以是处理器本身,或者处理器中软件的一部分,硬件的一部分,或者软件和硬件结合的一部分。因此,图中的各个模块的数量仅仅是示意性的。
本领域技术人员能够理解的是,可以对系统中的各个模块进行适应性地拆分或合并。对具体模块的这种拆分或合并并不会导致技术方案偏离本发明的原理,因此,拆分或合并之后的技术方案都将落入本发明的保护范围内。
至此,已经结合附图所示的一个实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
Claims (10)
1.一种基于数据血缘自动控制任务的方法,其特征在于,所述方法包括:
自动识别数据任务中需要使用的数据并生成数据血缘关系;
在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务;
设置当前数据任务实际依赖的上游数据任务的时间和数据关系;
根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态;
根据所述执行状态执行当前数据任务。
2.根据权利要求1所述的方法,其特征在于,
所述自动识别包括:根据每个数据任务在执行时需要读写的数据表,确定所述数据任务依赖和被依赖的数据任务;
其中,所述数据任务读的数据为所述数据任务依赖的上游数据任务;
其中,所述数据任务写的数据为依赖所述数据任务的下游数据任务;
所述数据血缘关系包括:每个数据任务依赖的上游数据任务以及依赖所述数据任务的下游数据任务的数据血缘地图。
3.根据权利要求2所述的方法,其特征在于,
“所述数据血缘关系”还包括:每个数据任务执行时需要一个或多个数据,需要的所述数据来自不同的上游数据任务执行成功后输出的数据;
在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务具体包括:提供当前数据任务对应的数据血缘地图中数据和任务的完整数据血缘链路;
设置当前数据任务实际依赖的上游数据任务的时间和数据关系具体包括:
根据当前数据任务对应的所述完整数据血缘链路,确定当前数据任务需要的每个数据实际对应依赖的一个或多个上游数据任务,以及实际对应依赖的上游数据任务的执行时间。
4.根据权利要求1所述的方法,其特征在于,“根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态”,具体包括:
每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态。
5.根据权利要求4所述的方法,其特征在于,“每次执行当前数据任务达到一个设置的时间点需要读取数据时,先判断需要读取的所述数据依赖的上游数据任务执行的时间和执行状态”,具体包括:
每次执行当前数据任务达到一个设置的时间点时,所述当前数据任务先对接收的需要读取的所述数据对应依赖的上游数据任务的推送来的最后一条状态消息进行判断;
分析所述状态消息中对应的上游数据任务的执行时间是否已经结束,以及执行状态为成功、失败或正在执行中;
其中,需要读取的所述数据对应依赖的上游数据任务的执行状态发生变化时,将推送最新执行的状态消息至所述当前数据任务。
6.根据权利要求5所述的方法,其特征在于,“根据所述执行状态执行当前数据任务”,具体包括:
若所有上游数据任务的最后一条状态消息中执行状态为“执行成功”,则表明当前数据任务需要读取的数据已经更新成功,直接执行;
若上游数据任务的最后一条状态消息中执行状态为“执行失败”,则表明当前任务需要读取的数据未更新成功,直接自置为“失败状态”,本次任务停止执行;
若上游数据任务的最后一条状态消息中执行状态为“执行中”,则当前数据任务需要读取的数据正在更新阶段,进入等待状态,并等待预先设置的时间长度;
其中,如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行成功”,则当前数据任务根据接收的更新的最后一条状态消息中执行状态为所述“执行成功”直接执行;
如果在所述预先设置的时间长度内,所述上游数据任务的执行状态发生变化为“执行失败”,或者,如果超过预先设置的时间长度仍然未接收到上游数据任务的更新的最后一条状态消息,则当前数据任务直接自置为“失败状态”,所述当前数据任务停止执行。
7.根据权利要求5所述的方法,其特征在于,还包括:
如果当前数据任务自置为“失败状态”,根据预先设置的自动重跑,由当前数据任务发出激活指示,激活需要读取的所述数据依赖的上游数据任务重新执行;
当所述上游数据任务重新执行后推送至当前数据任务的最后一条状态消息中执行状态为“执行成功”,且根据预先设置的所述自动重跑,当前数据任务接收到所述状态消息后重新执行。
8.一种计算机可读存储介质,其特征在于,所述存储介质中存储有多条程序代码,所述程序代码适用于由处理器加载并运行以执行权利要求1至7中任一项所述的基于数据血缘自动控制任务的方法。
9.一种控制装置,该处理装置包括处理器和存储装置,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行权利要求1至7中任一项所述的基于数据血缘自动控制任务的方法。
10.一种基于数据血缘自动控制任务的系统,其特征在于,包括:
自动识别模块,其用于自动识别数据任务中需要使用的数据并生成数据血缘关系;
提供上游数据任务模块,其用于在数据任务开发时,根据所述数据血缘关系,提供当前数据任务依赖的所有上游数据任务;
设置模块,其用于设置当前数据任务实际依赖的上游数据任务的时间和数据关系;
判断模块,其用于根据所述时间和数据关系执行当前数据任务,并在每达到一个设置的时间点时判断实际依赖的上游数据任务执行状态;
执行模块,其用于根据所述执行状态执行当前数据任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011348725.1A CN112487004A (zh) | 2020-11-26 | 2020-11-26 | 基于数据血缘自动控制任务的方法、装置、介质及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011348725.1A CN112487004A (zh) | 2020-11-26 | 2020-11-26 | 基于数据血缘自动控制任务的方法、装置、介质及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112487004A true CN112487004A (zh) | 2021-03-12 |
Family
ID=74935057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011348725.1A Pending CN112487004A (zh) | 2020-11-26 | 2020-11-26 | 基于数据血缘自动控制任务的方法、装置、介质及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112487004A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114610473A (zh) * | 2022-05-11 | 2022-06-10 | 恒生电子股份有限公司 | 任务的处理方法及装置、非易失性存储介质 |
-
2020
- 2020-11-26 CN CN202011348725.1A patent/CN112487004A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114610473A (zh) * | 2022-05-11 | 2022-06-10 | 恒生电子股份有限公司 | 任务的处理方法及装置、非易失性存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106970921B (zh) | 一种数据迁移方法及装置 | |
CN102117234B (zh) | 移动终端在软件升级失败时恢复原有软件的方法 | |
CN110659256B (zh) | 多机房同步方法、计算设备及计算机存储介质 | |
CN110825495A (zh) | 一种容器云平台的恢复方法、装置、设备及可读存储介质 | |
CN110225078B (zh) | 一种应用服务更新方法、系统及终端设备 | |
CN113760476B (zh) | 任务依赖处理方法及相关装置 | |
CN110109741B (zh) | 循环任务的管理方法、装置、电子设备及存储介质 | |
CN112394966A (zh) | 设备升级方法、装置、计算机可读介质及设备 | |
CN107179982B (zh) | 一种跨进程调试方法和装置 | |
CN110704236B (zh) | 芯片flash数据的在线校验方法及计算机存储介质 | |
CN112487004A (zh) | 基于数据血缘自动控制任务的方法、装置、介质及系统 | |
CN111651304A (zh) | 基于双芯智能电表的软件恢复方法、装置和计算机设备 | |
CN103823711A (zh) | 在Java虚拟机中提供相对定时的方法及装置 | |
US20190188036A1 (en) | Computer system and program migration method | |
CN113342512B (zh) | 一种io任务静默与驱动方法、装置及相关设备 | |
CN113900952A (zh) | 测试用例执行方法、装置、终端设备和可读存储介质 | |
CN110908821B (zh) | 任务失败管理的方法、装置、设备和存储介质 | |
CN114091170A (zh) | 一种仿真信息模拟方法、装置、设备及存储介质 | |
CN112463457A (zh) | 一种保障应用一致性的数据保护方法、装置、介质及系统 | |
CN113515291A (zh) | 设备在线升级方法和装置 | |
CN104572332A (zh) | 处理系统崩溃的方法和装置 | |
CN110968486A (zh) | 一种脚本运行方法及装置 | |
CN113867752A (zh) | 一种产品固件的升级方法及装置 | |
CN115203329A (zh) | 数据同步方法、数据同步装置、计算机可读存储介质 | |
CN116226144A (zh) | 数据的处理方法、装置、计算机可读存储介质和电子设备 |
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 |