一种解析多脚本间依赖关系生成AzkabanFlow文件的方法技术

技术编号:39062788 阅读:17 留言:0更新日期:2023-10-12 19:55
本申请属于数据处理技术领域,尤其涉及一种解析多脚本间依赖关系生成Azkaban Flow文件的方法。本申请具体包括S1.设置抓取依赖关系的关键字;S2.待调度的任务名称和指令写入任务文件;S3.需要配置映射关系的任务写入配置文件;S4.Shell、Python脚本间的调用关系写入文件;S5.Azkaban相关配置写入文件;S6.扫描指定目录下的.sql文件,根据关键字解析依赖关系;S7.解析结果写入Flow文件。本申请将任务名称、执行指令和解析到的依赖项等信息写入Flow文件,实现了自动解析,方便快捷地解析脚本间依赖关系,避免遗漏错配是个急需解决的问题。避免遗漏错配是个急需解决的问题。避免遗漏错配是个急需解决的问题。

【技术实现步骤摘要】
一种解析多脚本间依赖关系生成Azkaban Flow文件的方法


[0001]本申请属于数据处理
,尤其涉及一种解析多脚本间依赖关系生成Azkaban Flow文件的方法。

技术介绍

[0002]随着业务场景中SQL脚本、Shell脚本和Python脚本的广泛应用,解析脚本间的依赖关系成了一个重要问题。在复杂的系统中,脚本的执行顺序对于最终结果的正确性至关重要。然而,手工配置脚本间的依赖关系容易出现遗漏、重复或错配的情况,导致错误的结果。
[0003]2)现有技术的解决方案:
[0004]目前存在一些解决方案来解析脚本间的依赖关系,其中一种常用的方法是使用任务调度工具Azkaban。Azkaban可以通过配置任务依赖关系,自动执行脚本,并确保它们按照正确的顺序执行。通过Azkaban,可以将脚本定义为任务,并在任务之间建立依赖关系,以确保它们按照正确的顺序执行。
[0005]3)现有技术问题:
[0006]然而,使用Azkaban等任务调度工具仍然存在一些问题。首先,手工配置脚本间的依赖关系容易出现遗漏、重复或错配的情况,特别是在系统复杂度较高的情况下。这可能导致脚本执行的顺序错误,最终结果不正确。其次,任务调度工具本身可能存在一些限制,例如无法处理动态依赖关系或灵活的任务执行顺序。这些限制可能导致在某些场景下无法满足需求。
[0007]综上所述,现有技术虽然提供了一些解决方案来解析脚本间的依赖关系,但仍然存在一些问题。因此,需要一种更方便快捷的方法来解析脚本的依赖关系,以避免遗漏、重复、错配等问题,并提高任务调度的准确性和效率。

技术实现思路

[0008]本申请实施例提供了一种解析多脚本间依赖关系生成Azkaban Flow文件的方法,可以解决以避免遗漏、重复、错配等问题,并提高任务调度的准确性和效率。
[0009]第一方面,本申请实施例提供了一种解析多脚本间依赖关系生成Azkaban Flow文件的方法,包括如下步骤:视系统复杂度和编码规范设置至少一个关键字,具体包括如下步骤:
[0010]S1、设置关键字:在系统中设置关键字来标识需要处理的任务和脚本;
[0011]S2、将任务和指令写入文件:将待调度的任务名称和执行的指令写入文件中,方便后续处理;
[0012]S3、配置任务和脚本名称的映射关系:在配置文件中配置任务名称和脚本名称的映射关系,以处理名称不一致的情况;
[0013]S4、处理脚本依赖关系:扫描脚本目录,抓取SQL中依赖的表名和脚本名称,并根据
存放任务名称的文件找到被依赖的任务;
[0014]S5、过滤无效任务:过滤掉不存在的任务和被注释的内容,确保只处理有效的任务;
[0015]S6、确定父节点:根据配置文件中的映射关系确定正确的父节点,处理找不到父节点的任务;
[0016]S7、生成Azkaban配置文件:将Azkaban相关的配置内容写入Flow文件,包括用户名、失败重试次数、失败重试间隔时间和自定义变量;
[0017]S8、构建解析流程:将待调度的任务名称、执行的指令和解析到的依赖项依次写入Flow文件,完成解析流程的构建。
[0018]示例性的,
[0019]在步骤S1.视系统复杂度和编码规范设置一个或多个关键字。例如{database}.
[0020]在步骤S2.视系统复杂度将待调度的任务名称和在任务中执行的指令写入到一个或多个文件中。默认任务名称和脚本名称一致。只需定义文件名称和执行的指令。依赖项可留空。如果写了依赖项,会被忽略。
[0021]在步骤S3.由于特殊原因,任务名称和脚本名称无法一致,在一个单独的配置文件中配置任务名称和脚本名称的映射关系。
[0022]在步骤S4.如果SQL脚本执行前需要先执行某些Shell、Python脚本,在SQL脚本中写入关键字和Shell、Python脚本名称。
[0023]如果SQL脚本执行后需要执行某些Shell、Python脚本,可编辑一个单独的文件,写入关键字和SQL脚本名称。默认文件名和待调度的任务名称一致,文件扩展名为.sql。如果是单纯的Shell、Python脚本间的依赖,可用类似方法处理。
[0024]在步骤S5.Azkabn相关的配置,如用户名、失败重试次数、失败重试间隔时间、自定义变量写入一个单独的文件中。
[0025]在步骤S6.扫描所有存放脚本的目录,根据关键字抓取到SQL中依赖的表名,Shell、Python脚本的名称,扫描存放任务名称的文件,找到被依赖的任务。过滤掉不存在的任务名称,过滤掉被注释的内容,找不到父节点的任务,去读取配置文件中的映射关系,找到正确的父节点,如果还找不到,说明不存在依赖关系,过滤掉该父节点。
[0026]在步骤S7.将Azkaban相关的配置文件内容写入到Flow文件,依次将待调度的任务名称、执行的指令、解析到的依赖项写入到Flow文件。
[0027]应理解,
[0028]第二方面,本申请实施例提供了一种计算机可读存储介质,包括:所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述的方法。
[0029]第三方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的**方法。
[0030]可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
[0031]本申请实施例与现有技术相比存在的有益效果是:
[0032]1、灵活配置方式:本申请提供了一个灵活的配置方式来解决任务名称和脚本名称无法一致的问题。通过在单独的配置文件中配置任务名称和脚本名称的映射关系,
[0033]2、过滤机制:本申请提供了一个过滤机制来排除不存在依赖关系的任务。通过扫描存放任务名称的文件,找到被依赖的任务,并过滤掉不存在的任务名称,
[0034]3、解决找不到父节点的问题:本申请提供了一个解决方案来确定正确的父节点。通过读取配置文件中的映射关系,可以找到正确的父节点,解决了现有技术在处理找不到父节点的任务时的问题。
[0035]4、Azkaban相关配置的统一管理:本申请将Azkaban相关的配置信息写入一个单独的文件中,实现了配置的统一管理。这样可以更方便地维护和修改配置信息,提高了任务调度的可维护性。
[0036]5、提高任务调度的可视化程度:本申请将任务名称、执行指令和解析到的依赖项等信息写入Flow文件,自动解析任务之间的依赖关系,提高了任务调度的可理解性和可管理性。
附图说明
[0037]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种解析多脚本间依赖关系生成Azkaban Flow文件的方法,视系统复杂度和编码规范设置至少一个关键字,其特征在于,1)设置关键字:在系统中设置关键字来标识需要处理的任务和脚本;2)将任务和指令写入文件:将待调度的任务名称和执行的指令写入文件中,方便后续处理;3)配置任务和脚本名称的映射关系:在配置文件中配置任务名称和脚本名称的映射关系,以处理名称不一致的情况;4)处理脚本依赖关系:扫描脚本目录,抓取SQL中依赖的表名和脚本名称,并根据存放任务名称的文件找到被依赖的任务;5)过滤无效任务:过滤掉不存在的任务和被注释的内容,确保只处理有效的任务;6)确定父节点:根据配置文件中的映射关系确定正确的父节点,处理找不到父节点的任务;7)生成Azkaban配置文件:将Azkaban相关的配置内容写入Flow文件,至少包括...

【专利技术属性】
技术研发人员:崔婉莹
申请(专利权)人:上海通联金融服务有限公司
类型:发明
国别省市:

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

1