CN117076080A - 一种spark作业的调度方法、装置、设备及介质 - Google Patents
一种spark作业的调度方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117076080A CN117076080A CN202311053768.0A CN202311053768A CN117076080A CN 117076080 A CN117076080 A CN 117076080A CN 202311053768 A CN202311053768 A CN 202311053768A CN 117076080 A CN117076080 A CN 117076080A
- Authority
- CN
- China
- Prior art keywords
- sub
- job
- jobs
- dependent data
- spark
- 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
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000001419 dependent effect Effects 0.000 claims abstract description 243
- 238000012360 testing method Methods 0.000 claims description 176
- 230000015654 memory Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 22
- 230000001960 triggered effect Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 abstract description 16
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000012423 maintenance Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000007405 data analysis Methods 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据处理领域,公开了一种spark作业的调度方法、装置、设备及介质,用于解决复杂的spark sql难以开发和维护的问题。该方法中,获取待调度spark作业的多个子作业,以及各子作业对应的配置数据;配置数据包括:子作业的顺序号、子作业的依赖数据表、以及子作业的SQL语句;基于多个子作业各自对应的顺序号,依次对多个子作业进行调度;其中,每调度一个子作业,执行:基于子作业的调度日期,确定子作业的依赖数据表中的依赖数据的更新日期符合预设规则时,识别子作业的SQL语句,得到SQL语句中的参数信息;将依赖数据表中参数信息对应的目标依赖数据替换SQL语句中的参数信息,得到子作业的目标SQL语句;运行子作业的目标SQL语句,得到子作业对应的执行结果。
Description
技术领域
本申请涉及数据处理领域,具体涉及一种spark作业的调度方法、装置、设备及介质。
背景技术
Spark是一种快速、通用、可扩展的大数据分析引擎。它是通过不断壮大的大数据分析解决问题的,为分布式数据集的处理提供了一个有效框架,并以高效的方式处理分布式数据集。
Spark集批处理、实时流处理、交互式查询、机器学习与图计算于一体,避免了多种运算场景下需要部署不同集群带来的资源浪费。
然而,相关技术中,Spark的开发、测试以及调度均需要单独的测试工具,而且已知的开发spark sql的工具都不能系统化的管理sql,复杂的sql通常都是以脚本的方式存在,而脚本通常存在于客户端上,存在管理上和安全上问题。因此,对于开发人员来说,复杂的sql比较难开发和后续维护。且在对Spark进行调度时,对于发生问题的语句难以定位,因此复杂的spark sql也比较难维护。
因此,亟需一种spark作业的调度方法解决复杂的spark sql难以开发和维护的问题。
发明内容
本申请实施例提供一种spark作业的调度方法、装置、设备及介质,用于解决复杂的spark sql难以开发和维护的问题。
第一方面,本申请实施例提供一种spark作业的调度方法,所述方法包括:
获取待调度spark作业的多个子作业,以及各所述子作业对应的配置数据;所述配置数据包括:所述子作业的顺序号、所述子作业的依赖数据表、以及所述子作业的SQL语句;
基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度;其中,每调度一个子作业,执行以下操作:
基于所述子作业的调度日期,确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则时,识别所述子作业的SQL语句,得到所述SQL语句中的参数信息;
从所述依赖数据表中选择所述参数信息对应的目标依赖数据;
将所述目标依赖数据替换所述SQL语句中的参数信息,得到所述子作业的目标SQL语句;
运行所述子作业的目标SQL语句,得到所述子作业对应的执行结果。
本申请实施例中将一个spark作业分成多个子作业,同时将一个spark作业的复杂的SQL语句分成多个子作业的SQL,大幅度减少spark作业的复杂sql语句开发的复杂度,同时根据多个子作业各自对应的顺序号,依次对所述多个子作业进行调度,便于对于发生错误的语句进行定位,有利于spark作业的SQL语句的后期维护;
同时,对spark作业的多个子作业进行调度时,从子作业的依赖数据表中的依赖数据中确定目标依赖数据,更清晰的明确到了每个数据的数据来源,相较于传统的作业间依赖,使得数据的分析和调度更加方便,便于后期的维护。
在一种可能的实施例中,所述配置数据包括:所述依赖数据表的偏移值,其中,所述偏移值用于表征所述子作业的调度日期与所述依赖数据表的依赖数据的更新日期之间的最大差值;
若所述子作业有至少一个依赖数据表,则基于所述子作业的调度日期,确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则,包括:
针对任意一个依赖数据表,基于所述子作业的调度日期和所述依赖数据表的偏移值,确定所述依赖数据表的参考日期;以及基于所述参考日期和所述更新日期进行比较的结果,确定所述依赖数据表中的依赖数据的更新日期是否符合预设规则;
若确定所述至少一个依赖数据表中的依赖数据的更新日期均符合所述预设规则,则确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则。
在一种可能的实施例中,所述基于所述参考日期和所述更新日期进行比较的结果,确定所述依赖数据表中的依赖数据的更新日期是否符合预设规则,包括:
若所述依赖数据表中的依赖数据的更新日期不早于所述参考日期,则确定所述依赖数据表中的依赖数据的更新日期符合预设规则;
若所述依赖数据表中的依赖数据的更新日期早于所述参考日期,则确定所述依赖数据表中的依赖数据的更新日期不符合预设规则。
在一种可能的实施例中,所述配置信息包括:所述至少一个依赖数据表各自对应的依赖数据的数据类型;所述参数信息包括参数的数据类型;
所述从所述依赖数据表中选择所述参数信息对应的目标依赖数据,包括:
基于所述参数的数据类型和所述至少一个依赖数据表各自对应的依赖数据的数据类型,从所述至少一个依赖数据表中选择目标依赖数据表;所述目标依赖数据表的依赖数据的数据类型和所述参数的数据类型相同:
从所述目标依赖数据表的依赖数据中,选择所述更新日期不早于所述参考日期的依赖数据,作为所述参数信息对应的目标依赖数据。
在一种可能的实施例中,若所述待调度spark作业为多个,则所述基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度之前,所述方法还包括:
基于多个待调度spark作业的配置数据,确定所述多个待调度spark作业之间的依赖关系;
基于所述多个待调度spark作业之间的依赖关系,对所述多个待调度spark作业进行排序,确定所述多个待调度spark作业各自对应的调度顺序;
所述基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度,包括:
基于所述调度顺序确定当前需要调度的待调度spark作业;
基于当前需要调度的待调度spark作业中的所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度。
在一种可能的实施例中,所述基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度之前,所述方法还包括:
响应用户触发的针对所述待调度spark作业的测试操作,调用所述待调度spark作业对应的测试接口,对所述待调度spark作业的多个子作业的SQL语句进行测试,得到所述多个子作业的测试结果;
若所述多个子作业的测试结果符合各自对应的预设测试结果,则执行基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度的步骤;
若所述多个子作业的测试结果中存在至少一个子作业的测试结果不符合对应的预设测试结果,则基于所述至少一个子作业对应的测试结果与所述至少一个子作业对应的预设测试结果之间的差异,对所述至少一个子作业的SQL语句进行调整,直至所述至少一个子作业对应的测试结果符合所述至少一个子作业对应的预设测试结果。
在一种可能的实施例中,所述对所述待调度spark作业的多个子作业的SQL语句进行测试,得到所述多个子作业的测试结果,包括:
针对任意一个子作业:
识别所述子作业的SQL语句,得到所述SQL语句中的测试参数信息;
从所述子作业的测试依赖数据表中选择所述测试参数信息对应的目标测试依赖数据;其中,所述测试依赖数据表的测试依赖数据的更新日期不早于所述子作业的测试参考日期;所述参考测试日期是基于所述子作业的测试日期与所述测试依赖数据表的偏移值确定的;所述偏移值用于表征子作业的测试日期与所述测试依赖数据表的测试依赖数据的更新日期之间的最大差值;
将所述目标测试依赖数据替换所述SQL语句中的测试参数信息,得到所述子作业的目标测试SQL语句;
运行所述子作业的目标测试SQL语句,得到所述子作业对应的测试结果。
第二方面,本申请提供了一种spark作业的调度装置,所述装置包括:
获取单元,用于获取待调度spark作业的多个子作业,以及各所述子作业对应的配置数据;所述配置数据包括:所述子作业的顺序号、所述子作业的依赖数据表、以及所述子作业的SQL语句;
调度单元,用于基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度;其中,每调度一个子作业,执行以下操作:
基于所述子作业的调度日期,确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则时,识别所述子作业的SQL语句,得到所述SQL语句中的参数信息;
从所述依赖数据表中选择所述参数信息对应的目标依赖数据;
将所述目标依赖数据替换所述SQL语句中的参数信息,得到所述子作业的目标SQL语句;
运行所述子作业的目标SQL语句,得到所述子作业对应的执行结果。
在一种可能的实施例中,所述配置数据包括:所述依赖数据表的偏移值,其中,所述偏移值用于表征所述子作业的调度日期与所述依赖数据表的依赖数据的更新日期之间的最大差值;
若所述子作业有至少一个依赖数据表,则所述调度单元,具体用于:
针对任意一个依赖数据表,基于所述子作业的调度日期和所述依赖数据表的偏移值,确定所述依赖数据表的参考日期;以及基于所述参考日期和所述更新日期进行比较的结果,确定所述依赖数据表中的依赖数据的更新日期是否符合预设规则;
若确定所述至少一个依赖数据表中的依赖数据的更新日期均符合所述预设规则,则确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则。
在一种可能的实施例中,所述调度单元,具体用于:
若所述依赖数据表中的依赖数据的更新日期不早于所述参考日期,则确定所述依赖数据表中的依赖数据的更新日期符合预设规则;
若所述依赖数据表中的依赖数据的更新日期早于所述参考日期,则确定所述依赖数据表中的依赖数据的更新日期不符合预设规则。
在一种可能的实施例中,所述配置信息包括:所述至少一个依赖数据表各自对应的依赖数据的数据类型;所述参数信息包括参数的数据类型;
所述调度单元,具体用于:
基于所述参数的数据类型和所述至少一个依赖数据表各自对应的依赖数据的数据类型,从所述至少一个依赖数据表中选择目标依赖数据表;所述目标依赖数据表的依赖数据的数据类型和所述参数的数据类型相同:
从所述目标依赖数据表的依赖数据中,选择所述更新日期不早于所述参考日期的依赖数据,作为所述参数信息对应的目标依赖数据。
在一种可能的实施例中,若所述待调度spark作业为多个,则所述装置还包括:作业调度顺序确定单元,用于:
基于多个待调度spark作业的配置数据,确定所述多个待调度spark作业之间的依赖关系;
基于所述多个待调度spark作业之间的依赖关系,对所述多个待调度spark作业进行排序,确定所述多个待调度spark作业各自对应的调度顺序;
所述调度单元,具体用于:
基于所述调度顺序确定当前需要调度的待调度spark作业;
基于当前需要调度的待调度spark作业中的所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度。
在一种可能的实施例中,所述装置还包括:
测试单元,用于:
响应用户触发的针对所述待调度spark作业的测试操作,调用所述待调度spark作业对应的测试接口,对所述待调度spark作业的多个子作业的SQL语句进行测试,得到所述多个子作业的测试结果;
若所述多个子作业的测试结果符合各自对应的预设测试结果,则执行基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度的步骤;
若所述多个子作业的测试结果中存在至少一个子作业的测试结果不符合对应的预设测试结果,则基于所述至少一个子作业对应的测试结果与所述至少一个子作业对应的预设测试结果之间的差异,对所述至少一个子作业的SQL语句进行调整,直至所述至少一个子作业对应的测试结果符合所述至少一个子作业对应的预设测试结果。
在一种可能的实施例中,所述测试单元,具体用于:
针对任意一个子作业:
识别所述子作业的SQL语句,得到所述SQL语句中的测试参数信息;
从所述子作业的测试依赖数据表中选择所述测试参数信息对应的目标测试依赖数据;其中,所述测试依赖数据表的测试依赖数据的更新日期不早于所述子作业的测试参考日期;所述参考测试日期是基于所述子作业的测试日期与所述测试依赖数据表的偏移值确定的;所述偏移值用于表征子作业的测试日期与所述测试依赖数据表的测试依赖数据的更新日期之间的最大差值;
将所述目标测试依赖数据替换所述SQL语句中的测试参数信息,得到所述子作业的目标测试SQL语句;
运行所述子作业的目标测试SQL语句,得到所述子作业对应的测试结果。
第三方面,本申请提供一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中任一项所述的spark作业的调度方法包括的步骤。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任一项所述的spark作业的调度方法。
第五方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行第一方面中任一项所述的spark作业的调度方法。
第二方面至第五方面中任意一种实现方式所带来的技术效果可参见第一方面的现方式所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术对象员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种spark作业的调度方法的总体构架图;
图2为本申请实施例提供的一种spark作业的调度方法的流程示意图;
图3为本申请实施例提供的一种spark作业的配置数据的示意图;
图4为本申请实施例提供的一种确定依赖数据的更新日期符合预设规则的方法的流程示意图;
图5为本申请实施例提供的一种spark作业的调度方法的流程示意图;
图6为本申请实施例提供的一种spark作业的测试方法的流程示意图;
图7为本申请实施例提供的一种spark作业的调度装置的结构图;
图8为本申请实施例提供的一种电子设备的结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术对象员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以按不同于此处的顺序执行所示出或描述的步骤。
本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
本申请技术方案中,对数据的采集、传播、使用等,均符合国家相关法律法规要求。
为了便于本领域技术人员更好地理解本申请的技术方案,下面对本申请涉及的部分概念进行介绍。
Spark:是一种与Hadoop(分布式系统基础架构)相似的开源集群计算引擎,但是Spark在某些工作负载方面表现得更加优越,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark SQL:是Spark用来处理结构化数据的一个模块,可以通过sql语句来处理加工结构化的数据。
Apache Livy:是一个可以通过REST接口(Representational State Transfer,表现层状态转移)与Spark集群进行交互的服务,它可以提交Spark作业或者Spark代码片段,同步或者异步的进行结果检索以及Spark Context上下文管理,Apache Livy简化Spark和应用程序服务器之间的交互,从而使Spark能够用于交互式Web/移动应用程序。
批量作业调度工具:主要用于调度、管理和监控批量作业。常见的批量作业调度工具包括Oozie、Azkaban、Apache Taurus等。
作业:指通过一个或一组程序或者脚本来对数据经行处理(ETL)的过程。
在介绍本申请实施例所提供的spark作业的调度方法之前,为了便于理解,首先对下面对本申请实施例的技术背景进行详细介绍。
Spark是一种快速、通用、可扩展的大数据分析引擎。它是通过不断壮大的大数据分析解决问题的,为分布式数据集的处理提供了一个有效框架,并以高效的方式处理分布式数据集。
Spark集批处理、实时流处理、交互式查询、机器学习与图计算于一体,避免了多种运算场景下需要部署不同集群带来的资源浪费。
然而,相关技术中,Spark的开发、测试以及调度均需要单独的测试工具,而且已知的开发spark sql的工具都不能系统化的管理sql,复杂的sql通常都是以脚本的方式存在,而脚本通常存在于客户端上,存在管理上和安全上问题。因此,对于开发人员来说,复杂的sql比较难开发和后续维护。且在对Spark进行调度时,对于发生问题的语句难以定位,因此复杂的spark sql也比较难维护。
因此,亟需一种spark作业的调度方法解决复杂的spark sql难以开发和维护的问题。
有鉴于此,本申请实施例提供一种spark作业的调度方法、装置、设备及介质,用于解决复杂的spark sql难以开发和维护的问题。
本申请的发明构思可概括为:本申请实施例中将一个spark作业分成多个子作业,同时将一个spark作业的复杂的SQL语句分成多个子作业的SQL,大幅度减少spark作业的复杂sql语句开发的复杂度,同时根据多个子作业各自对应的顺序号,依次对多个子作业进行调度,便于对于发生错误的语句进行定位,有利于spark作业的SQL语句的后期维护;同时,为spark作业的多个子作业进行配置,得到配置数据,在进行调度时,从子作业的依赖数据表中的依赖数据中确定目标依赖数据,将目标依赖数据替换SQL语句中的参数信息,得到子作业的目标SQL语句;运行子作业的目标SQL语句,得到子作业对应的执行,更清晰的明确到了每个数据的数据来源,相较于传统的作业间依赖,使得数据的分析和调度更加方便,便于后期的维护。
在介绍完本申请的发明构思之后,下面结合图1,对本申请实施例的应用场景进行介绍。
参照图1,为本申请实施例提供的一种spark作业的调度方法的应用场景图。如图1所示,该场景中包括:终端设备110和服务器120,终端设备110与服务器120之间可以通过通信网络进行通信。
在一种可选的实施方式中,通信网络可以是有线网络或无线网络。因此,终端设备110和服务器120可以通过有线或无线通信方式进行直接或间接地连接。比如,终端设备110可以通过无线接入点与服务器120间接地连接,或发终端设备110通过因特网与服务器120直接地连接,本申请在此不做限制。
在本申请实施例中,终端设备110包括但不限于手机、平板电脑、笔记本电脑、台式电脑、电子书阅读器、智能语音交互设备、智能家电、车载终端等设备;终端设备上可以安装有各种客户端,该客户端可以是应用程序(例如浏览器、游戏软件等),也可以是网页、小程序等。
服务器120是与终端设备110中安装的客户端相对应的后台服务器。服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
需要说明的是,本申请实施例中的spark作业的调度方法可部署在电子设备中,该电子设备可以为服务器或者终端设备。
其中,服务器可以为图1中所示的服务器120,也可以为出图1中所示的服务器120以外的其他服务器。
具体的,用户通过终端设备上安装的应用程序触发spark作业的调度请求;接着,该调度请求到达应用程序对应的后台服务器,后台服务器基于调度请求执行本申请实施例提供的spark作业的调度方法。
其中,终端设备可以为图1中所示的终端设备110,也可以为出图1中所示的终端设备110以外的其他终端设备。
具体的,用户通过终端设备上安装的应用程序触发spark作业的调度请求;接着,该调度请求到达应用程序对应的后台服务器,后台服务器基于调度请求执行本申请实施例提供的spark作业的调度方法。
图1所示只是举例说明,实际上终端设备110和服务器120的数量不受限制,在本申请实施例中不做具体限定。
本申请实施例中,当服务器120的数量为多个时,多个服务器120可组成为一区块链,而服务器120为区块链上的节点;如本申请实施例所公开的spark作业的调度方法,其中所涉及的多个子作业的配置数据等可保存于区块链上。
基于上述应用场景,下面结合上述描述的应用场景,根据附图来描述本申请示例性实施方式提供的spark作业的调度方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。
参考图2,图2示例性的提供了本申请实施例中一种spark作业的调度方法,该方法可以由电子设备执行,包括以下步骤:
步骤S201,获取待调度spark作业的多个子作业,以及各子作业对应的配置数据;配置数据包括:子作业的顺序号、子作业的依赖数据表、以及子作业的SQL语句。
其中,各个spark作业以及子作业的配置数据的配置方法包括以下两种:
在excel中配置:excel主要用于不同环境之间的流转,比如在测试环境开发配置数据,然后导出到excel,在生产环境中导入使用。
在web前段配置:主要用于作业配置管理,除了包括普通的增删改查,还包含暂停作业、指定重跑、重新设置开始运行日期等作业调度相关的操作。
示例性的,如图3所示,为本申请实施例提供的spark作业的配置数据,其中:
作业名:spark作业的作业名称。
开始日期:spark作业的开始运行日期。
作业功能描述:简要描述spark作业功能,便于后期维护。
作业调度频率:spark作业的运行频率,例如每日执行一次、每月执行一次、每周执行一次等等。
子作业配置:每个spark作业可以配置可以分成多个step,即子作业,每个子作业实现spark作业的一个小功能。
每个子作业都是对应的配置数据,包括:
子作业的顺序号:当前子作业的唯一标识,表示当前子作业的执行顺序,是自动生成的数字编号。
目标表的表名:存储当前子作业的执行结果的表的表名。
目标表的类型:类型可以是物理表,也可以是临时表。
结果缓存情况:当前子作业的执行结果是否需要缓存;若当前子作业的目标表是临时表,对于需要缓存的执行结果,可以将执行结果缓存起来,以避免子作业的重复执行。
子作业的依赖数据表:存储当前子作业的依赖数据的数据表,可以是多个表,也可以是一个表。其中,每个依赖数据表具有一个偏移值。
子作业的SQL语句:当前子作业要执行的sql语句,是一个简单的sql语句,方便后期维护。
建表SQL语句:如果当前子作业的目标表是物理表,则需要配置建表的sql语句。
功能描述:描述当前子作业完成的功能。
步骤S202,基于多个子作业各自对应的顺序号,依次对多个子作业进行调度;其中,每调度一个子作业,执行步骤S203-S206。
其中,待调度spark作业的多个子作业之间可能相互依赖,因此本申请实施例中spark作业的多个子作业之间需要按照配置的顺序号对多个子作业进行调度。
在一种可能的实施例中,若待调度spark作业为多个,则基于多个子作业各自对应的顺序号,依次对多个子作业进行调度之前,方法还包括:
基于多个待调度spark作业的配置数据,确定多个待调度spark作业之间的依赖关系;
基于多个待调度spark作业之间的依赖关系,对多个待调度spark作业进行排序,确定多个待调度spark作业各自对应的调度顺序;
基于多个子作业各自对应的顺序号,依次对多个子作业进行调度,包括:
基于调度顺序确定当前需要调度的待调度spark作业;
基于当前需要调度的待调度spark作业中的多个子作业各自对应的顺序号,依次对多个子作业进行调度。
示例性的,若待调度spark作业包括作业A、作业B、作业C,根据配置数据确定作业B依赖作业C,作业C依赖作业A,那么待调度spark作业的调度顺序依次为作业A、作业C、作业B,则根据调度顺序,首先对作业A的子作业进行调度;在作业A的所有子作业调度完成后,对作业C的子作业进行调度;在作业C的所有子作业调度完成后,对作业B的子作业进行调度。
其中,可以在基于调度顺序确定当前需要调度的待调度spark作业之后,且在基于当前需要调度的待调度spark作业中的多个子作业各自对应的顺序号,依次对多个子作业进行调度之前,获取当前需要调度的待调度spark作业的多个子作业,以及各子作业对应的配置数据;也可以在获取所有待调度spark作业的多个子作业,以及各子作业对应的配置数据之后,基于调度顺序确定当前需要调度的待调度spark作业。
步骤S203,基于子作业的调度日期,确定子作业的依赖数据表中的依赖数据的更新日期符合预设规则时,识别子作业的SQL语句,得到SQL语句中的参数信息。
在一种可能的实施例中,子作业的配置数据中包括:依赖数据表的偏移值,其中,偏移值用于表征子作业的调度日期与依赖数据表的依赖数据的更新日期之间的最大差值;
若子作业有至少一个依赖数据表,则基于子作业的调度日期,确定子作业的依赖数据表中的依赖数据的更新日期符合预设规则,可以执行为如图4所示的步骤:
在步骤S401中,针对任意一个依赖数据表,基于子作业的调度日期和依赖数据表的偏移值,确定依赖数据表的参考日期;以及基于参考日期和更新日期进行比较的结果,确定依赖数据表中的依赖数据的更新日期是否符合预设规则。
示例性的,若子作业的调度日期为2022年7月3日,依赖数据表的偏移值为-4,则依赖数据表的参考日期为2022年7月3日之前的4天,即2022年6月30日。
在步骤S402中,若确定至少一个依赖数据表中的依赖数据的更新日期均符合预设规则,则确定子作业的依赖数据表中的依赖数据的更新日期符合预设规则。
示例性的,若子作业有5个依赖数据表,则每个依赖数据表都有一个偏移值,首先根据子作业的调度日期和依赖数据表的偏移值,确定依赖数据表的参考日期;然后基于参考日期和更新日期进行比较的结果,若确定5个依赖数据表中的依赖数据的更新日期均符合预设规则,则确定子作业的依赖数据表中的依赖数据的更新日期符合预设规则。
在一种可能的实施例中,本申请实施例中针对任意一个依赖数据表,基于参考日期和更新日期进行比较的结果,确定依赖数据表中的依赖数据的更新日期是否符合预设规则,可以执行为:
若依赖数据表中的依赖数据的更新日期不早于参考日期,则确定依赖数据表中的依赖数据的更新日期符合预设规则;
若依赖数据表中的依赖数据的更新日期早于参考日期,则确定依赖数据表中的依赖数据的更新日期不符合预设规则。
示例性的,假设子作业的依赖数据表的参考日期为2022年6月30日,若依赖数据表中的依赖数据的更新日期为2022年6月29日,则说明依赖数据表中的依赖数据的更新日期不符合预设规则,若依赖数据表中的依赖数据的更新日期为2022年6月30日,则说明依赖数据表中的依赖数据的更新日期符合预设规则;若依赖数据表中的依赖数据的更新日期为2022年7月1日,则说明依赖数据表中的依赖数据的更新日期也符合预设规则。
步骤S204,从依赖数据表中选择参数信息对应的目标依赖数据。
在一种可能的实施例中,子作业的配置信息中还可以包括:至少一个依赖数据表各自对应的依赖数据的数据类型;参数信息包括参数的数据类型;
则从依赖数据表中选择参数信息对应的目标依赖数据,可以执行为:
基于参数的数据类型和至少一个依赖数据表各自对应的依赖数据的数据类型,从至少一个依赖数据表中选择目标依赖数据表;目标依赖数据表的依赖数据的数据类型和参数的数据类型相同:从目标依赖数据表的依赖数据中,选择更新日期不早于参考日期的依赖数据,作为参数信息对应的目标依赖数据。
示例性的,若依赖数据表中和参数的数据类型相同的依赖数据包括更新日期为2022年6月27日的依赖数据、更新日期为2022年6月28日的依赖数据、更新日期为2022年6月29日的依赖数据、更新日期为2022年6月30日的依赖数据;此时确定参考日期为2022年6月30日,则确定更新日期为2022年6月30日的依赖数据为参数信息对应的目标依赖数据。
步骤S205,将目标依赖数据替换SQL语句中的参数信息,得到子作业的目标SQL语句。
步骤S206,运行子作业的目标SQL语句,得到子作业对应的执行结果。
在一种可能的实施方式中,若根据配置数据中的依赖数据表确定子作业对应的执行结果需要被其他待调度spark作业使用,则将根据子作业的配置数据中的建表SQL语句,创建物理表,并将子作业对应的执行结果存储在该物理表中,并将子作业对应的执行结果的更新日期登记为子作业的调度日期。
其中,存放在物理表中的子作业对应的执行结果为,需要使用该执行结果的其他待调度spark作业的依赖数据。
若根据配置数据中的依赖数据表确定子作业对应的执行结果不需要被其他待调度spark作业使用但被其他子作业使用,则创建临时表,将子作业对应的执行结果存储在该临时表中,并将临时表中的执行结果进行缓存,以便调度其他子作业时使用。
其中,在待调度spark作业的多个子作业对全部调度结束后,清理待调度spark作业的所有临时表中的执行结果,并将待调度spark作业的调度日期更新为下一调度日期。下一调度日期为作业调度频率与本次调度日期的和。
示例性的,若本次调度日期为2022年6月3日,作业调度频率为30天,则下一调度日期为2022年7月3日。
在一种可能的实施方式中,本申请实施例中还可以设置数据登记接口;只要有一个依赖数据表中的依赖数据的更新日期符合预设规则,则可以通过数据登记接口登记该依赖数据表,并触发监测器监测有没有待调度spark作业的依赖数据表中的依赖数据的更新日期符合预设规则,若有,则调用Apache Livy接口执行本申请实施例提供的spark作业的调度方法。
为了便于理解,下面参照图5,对本申请实施例提供的spark作业的调度方法的流程进行说明,具体包括以下步骤:
在步骤501中,获取待调度spark作业的多个子作业,以及各子作业对应的配置数据;配置数据包括:子作业的顺序号、子作业的依赖数据表、以及子作业的SQL语句。
在步骤502中,基于多个待调度spark作业的配置数据,确定多个待调度spark作业之间的依赖关系;
在步骤503中,基于多个待调度spark作业之间的依赖关系,对多个待调度spark作业进行排序,确定多个待调度spark作业各自对应的调度顺序;
在步骤504中,基于调度顺序确定当前需要调度的待调度spark作业;
在步骤505中,基于当前需要调度的待调度spark作业中的多个子作业各自对应的顺序号,确定当前需要调度的子作业;
在步骤506中,基于子作业的调度日期和依赖数据表的偏移值,确定依赖数据表的参考日期;并获取参考日期和更新日期进行比较的结果;
在步骤507中,判断子作业的依赖数据表中的依赖数据的更新日期是否符合预设规则;若符合,则在步骤508中,基于子作业的SQL语句和子作业的依赖数据表,对子作业进行调度,获得子作业对应的执行结果;若不符合,则直接执行步骤512;
在步骤509中,基于子作业的配置数据,判断子作业对应的执行结果是否存储在物理表中;若是,则在步骤510中,创建物理表,将子作业对应的执行结果存储在该物理表中,并将子作业对应的执行结果的更新日期登记为子作业的调度日期;若不是,则在步骤511中,创建临时表,将子作业对应的执行结果存储在该临时表中,并将临时表中的执行结果进行缓存;
然后在步骤512中,判断是否为最后一个子作业,若是,则在步骤513中,清理待调度spark作业的所有临时表中的执行结果,并将待调度spark作业的调度日期更新为下一调度日期;若不是,则返回执行步骤505;
在步骤514中,判断是否为最后一个待调度spark作业,若是,则结束此次调度;若不是,则返回执行步骤504。
由此,将一个spark作业的复杂的SQL语句分成多个子作业的SQL语句,大幅度减少了spark作业的sql语句的开发复杂度,同时根据多个子作业各自对应的顺序号,依次对多个子作业进行调度,便于对于发生错误的语句进行定位,有利于spark作业的SQL语句的后期维护;对spark作业的多个子作业进行调度时,从子作业的依赖数据表中的依赖数据中确定目标依赖数据,更清晰的明确到了每个数据的数据来源,相较于传统的作业间依赖,使得数据的分析和调度更加方便,便于后期的维护。
在一种可能的实施例中,基于多个子作业各自对应的顺序号,依次对多个子作业进行调度之前,方法还包括:
响应用户触发的针对待调度spark作业的测试操作,调用待调度spark作业对应的测试接口,对待调度spark作业的多个子作业的SQL语句进行测试,得到多个子作业的测试结果;
若多个子作业的测试结果符合各自对应的预设测试结果,则执行基于多个子作业各自对应的顺序号,依次对多个子作业进行调度的步骤;
若多个子作业的测试结果中存在至少一个子作业的测试结果不符合对应的预设测试结果,则基于至少一个子作业对应的测试结果与至少一个子作业对应的预设测试结果之间的差异,对至少一个子作业的SQL语句进行调整,直至至少一个子作业对应的测试结果符合至少一个子作业对应的预设测试结果。
在一种可能的实施例中,对待调度spark作业的多个子作业的SQL语句进行测试,得到多个子作业的测试结果,包括:
针对任意一个子作业:
识别子作业的SQL语句,得到SQL语句中的测试参数信息;
从子作业的测试依赖数据表中选择测试参数信息对应的目标测试依赖数据;其中,测试依赖数据表的测试依赖数据的更新日期不早于子作业的测试参考日期;参考测试日期是基于子作业的测试日期与测试依赖数据表的偏移值确定的;偏移值用于表征子作业的测试日期与测试依赖数据表的测试依赖数据的更新日期之间的最大差值;
将目标测试依赖数据替换SQL语句中的测试参数信息,得到子作业的目标测试SQL语句;
运行子作业的目标测试SQL语句,得到子作业对应的测试结果。
为了便于理解,下面参照图6,对本申请实施例提供的spark作业的测试方法的流程进行说明,具体包括以下步骤:
在步骤601中,获取待调度spark作业的多个子作业,以及各子作业对应的配置数据;配置数据包括:子作业的顺序号、子作业的依赖数据表、以及子作业的SQL语句。
在步骤602中,响应用户触发的针对待调度spark作业的测试操作,调用待调度spark作业对应的测试接口,基于待调度spark作业中的多个子作业各自对应的顺序号,确定当前需要测试的子作业。
在步骤603中,若确定当前需要测试的子作业的测试依赖数据表的测试依赖数据的更新日期符合预设规则,则基于当前需要测试的子作业的SQL语句和测试依赖数据表,对当前需要测试的子作业进行测试,得到测试结果;
在步骤604中,判断测试结果是否符合预设测试结果;
若不符合,则在步骤605中,基于测试结果与预设测试结果之间的差异,对当前需要测试的子作业的SQL语句进行调整;在步骤606中,将当前需要测试的子作业的SQL语句更新为调整后的SQL语句;然后,返回执行步骤603;
若符合,则在步骤607中,判断是否是最后一个子作业;若是,则在步骤608中,结束测试;若不是,则返回执行步骤602。
其中,测试结果不符合预设测试结果,包括:子作业的SQL语句直接报错,或者,测试结果和预设测试结果不一致。
基于前文的描述,本申请实施例中将一个spark作业分成多个子作业,同时将一个spark作业的复杂的SQL语句分成多个子作业的SQL,大幅度减少spark作业的复杂sql语句开发的复杂度,同时根据多个子作业各自对应的顺序号,依次对多个子作业进行调度,便于对于发生错误的语句进行定位,有利于spark作业的SQL语句的后期维护;
同时,对spark作业的多个子作业进行调度时,从子作业的依赖数据表中的依赖数据中确定目标依赖数据,更清晰的明确到了每个数据的数据来源,相较于传统的作业间依赖,使得数据的分析和调度更加方便,便于后期的维护。
基于相同的发明构思,本申请实施例提供一种spark作业的调度装置,请参照图7,该装置包括:获取单元701以及调度单元702,其中:
获取单元701,用于获取待调度spark作业的多个子作业,以及各所述子作业对应的配置数据;所述配置数据包括:所述子作业的顺序号、所述子作业的依赖数据表、以及所述子作业的SQL语句;
调度单元702,用于基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度;其中,每调度一个子作业,执行以下操作:
基于所述子作业的调度日期,确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则时,识别所述子作业的SQL语句,得到所述SQL语句中的参数信息;
从所述依赖数据表中选择所述参数信息对应的目标依赖数据;
将所述目标依赖数据替换所述SQL语句中的参数信息,得到所述子作业的目标SQL语句;
运行所述子作业的目标SQL语句,得到所述子作业对应的执行结果。
在一种可能的实施例中,所述配置数据包括:所述依赖数据表的偏移值,其中,所述偏移值用于表征所述子作业的调度日期与所述依赖数据表的依赖数据的更新日期之间的最大差值;
若所述子作业有至少一个依赖数据表,则所述调度单元702,具体用于:
针对任意一个依赖数据表,基于所述子作业的调度日期和所述依赖数据表的偏移值,确定所述依赖数据表的参考日期;以及基于所述参考日期和所述更新日期进行比较的结果,确定所述依赖数据表中的依赖数据的更新日期是否符合预设规则;
若确定所述至少一个依赖数据表中的依赖数据的更新日期均符合所述预设规则,则确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则。
在一种可能的实施例中,所述调度单元702,具体用于:
若所述依赖数据表中的依赖数据的更新日期不早于所述参考日期,则确定所述依赖数据表中的依赖数据的更新日期符合预设规则;
若所述依赖数据表中的依赖数据的更新日期早于所述参考日期,则确定所述依赖数据表中的依赖数据的更新日期不符合预设规则。
在一种可能的实施例中,所述配置信息包括:所述至少一个依赖数据表各自对应的依赖数据的数据类型;所述参数信息包括参数的数据类型;
所述调度单元702,具体用于:
基于所述参数的数据类型和所述至少一个依赖数据表各自对应的依赖数据的数据类型,从所述至少一个依赖数据表中选择目标依赖数据表;所述目标依赖数据表的依赖数据的数据类型和所述参数的数据类型相同:
从所述目标依赖数据表的依赖数据中,选择所述更新日期不早于所述参考日期的依赖数据,作为所述参数信息对应的目标依赖数据。
在一种可能的实施例中,若所述待调度spark作业为多个,则所述装置还包括:作业调度顺序确定单元,用于:
基于多个待调度spark作业的配置数据,确定所述多个待调度spark作业之间的依赖关系;
基于所述多个待调度spark作业之间的依赖关系,对所述多个待调度spark作业进行排序,确定所述多个待调度spark作业各自对应的调度顺序;
所述调度单元702,具体用于:
基于所述调度顺序确定当前需要调度的待调度spark作业;
基于当前需要调度的待调度spark作业中的所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度。
在一种可能的实施例中,所述装置还包括:
测试单元,用于:
响应用户触发的针对所述待调度spark作业的测试操作,调用所述待调度spark作业对应的测试接口,对所述待调度spark作业的多个子作业的SQL语句进行测试,得到所述多个子作业的测试结果;
若所述多个子作业的测试结果符合各自对应的预设测试结果,则执行基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度的步骤;
若所述多个子作业的测试结果中存在至少一个子作业的测试结果不符合对应的预设测试结果,则基于所述至少一个子作业对应的测试结果与所述至少一个子作业对应的预设测试结果之间的差异,对所述至少一个子作业的SQL语句进行调整,直至所述至少一个子作业对应的测试结果符合所述至少一个子作业对应的预设测试结果。
在一种可能的实施例中,所述测试单元,具体用于:
针对任意一个子作业:
识别所述子作业的SQL语句,得到所述SQL语句中的测试参数信息;
从所述子作业的测试依赖数据表中选择所述测试参数信息对应的目标测试依赖数据;其中,所述测试依赖数据表的测试依赖数据的更新日期不早于所述子作业的测试参考日期;所述参考测试日期是基于所述子作业的测试日期与所述测试依赖数据表的偏移值确定的;所述偏移值用于表征子作业的测试日期与所述测试依赖数据表的测试依赖数据的更新日期之间的最大差值;
将所述目标测试依赖数据替换所述SQL语句中的测试参数信息,得到所述子作业的目标测试SQL语句;
运行所述子作业的目标测试SQL语句,得到所述子作业对应的测试结果。
本申请实施例提供的spark作业的调度装置和上述实施例中spark作业的调度方法具有相同的有益效果,在此不进行一一赘述。
在介绍了本申请示例性实施方式的spark作业的调度方法和spark作业的调度装置之后,接下来,介绍根据本申请的实施例提供的电子设备。
本申请实施例提供一种电子设备,该设备可以实现前文论述的spark作业的调度方法,请参照图8,该设备包括存储器801、一个或多个处理器802以及总线803。
存储器801,用于存储处理器802执行的计算机程序。存储器801可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器801可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器801也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器801是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器801可以是上述存储器的组合。
处理器802,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器802,用于调用存储器801中存储的计算机程序时实现上述实施例中的spark作业的调度方法。
本申请实施例中不限定上述存储器801和处理器802之间的具体连接介质。本申请实施例在图8中以存储器801和处理器802之间通过总线803连接,总线803在图8中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线803可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在示例性实施例中,本申请实施例提供一种计算机可读存储介质,计算机程序产品包括:计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行如前文论述实施例中任一的spark作业的调度方法。由于上述计算机可读存储介质解决问题的原理与实施例中的spark作业的调度方法相似,因此上述计算机可读存储介质的实施可以参见方法的实施,重复之处不再赘述。
在示例性实施例中,本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行如前文论述实施例中任一的spark作业的调度方法。由于上述计算机程序产品解决问题的原理与实施例中的spark作业的调度方法相似,因此上述计算机程序产品的实施可以参见方法的实施,重复之处不再赘述。
本领域内的技术对象员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列用户操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术对象员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (11)
1.一种spark作业的调度方法,其特征在于,所述方法包括:
获取待调度spark作业的多个子作业,以及各所述子作业对应的配置数据;所述配置数据包括:所述子作业的顺序号、所述子作业的依赖数据表、以及所述子作业的SQL语句;
基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度;其中,每调度一个子作业,执行以下操作:
基于所述子作业的调度日期,确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则时,识别所述子作业的SQL语句,得到所述SQL语句中的参数信息;
从所述依赖数据表中选择所述参数信息对应的目标依赖数据;
将所述目标依赖数据替换所述SQL语句中的参数信息,得到所述子作业的目标SQL语句;
运行所述子作业的目标SQL语句,得到所述子作业对应的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述配置数据包括:所述依赖数据表的偏移值,其中,所述偏移值用于表征所述子作业的调度日期与所述依赖数据表的依赖数据的更新日期之间的最大差值;
若所述子作业有至少一个依赖数据表,则基于所述子作业的调度日期,确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则,包括:
针对任意一个依赖数据表,基于所述子作业的调度日期和所述依赖数据表的偏移值,确定所述依赖数据表的参考日期;以及基于所述参考日期和所述更新日期进行比较的结果,确定所述依赖数据表中的依赖数据的更新日期是否符合预设规则;
若确定所述至少一个依赖数据表中的依赖数据的更新日期均符合所述预设规则,则确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则。
3.根据权利要求2所述的方法,其特征在于,所述基于所述参考日期和所述更新日期进行比较的结果,确定所述依赖数据表中的依赖数据的更新日期是否符合预设规则,包括:
若所述依赖数据表中的依赖数据的更新日期不早于所述参考日期,则确定所述依赖数据表中的依赖数据的更新日期符合预设规则;
若所述依赖数据表中的依赖数据的更新日期早于所述参考日期,则确定所述依赖数据表中的依赖数据的更新日期不符合预设规则。
4.根据权利要求2所述的方法,其特征在于,所述配置信息包括:所述至少一个依赖数据表各自对应的依赖数据的数据类型;所述参数信息包括参数的数据类型;
所述从所述依赖数据表中选择所述参数信息对应的目标依赖数据,包括:
基于所述参数的数据类型和所述至少一个依赖数据表各自对应的依赖数据的数据类型,从所述至少一个依赖数据表中选择目标依赖数据表;所述目标依赖数据表的依赖数据的数据类型和所述参数的数据类型相同:
从所述目标依赖数据表的依赖数据中,选择所述更新日期不早于所述参考日期的依赖数据,作为所述参数信息对应的目标依赖数据。
5.根据权利要求1所述的方法,其特征在于,若所述待调度spark作业为多个,则所述基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度之前,所述方法还包括:
基于多个待调度spark作业的配置数据,确定所述多个待调度spark作业之间的依赖关系;
基于所述多个待调度spark作业之间的依赖关系,对所述多个待调度spark作业进行排序,确定所述多个待调度spark作业各自对应的调度顺序;
所述基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度,包括:
基于所述调度顺序确定当前需要调度的待调度spark作业;
基于当前需要调度的待调度spark作业中的所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度。
6.根据权利要求1所述的方法,其特征在于,所述基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度之前,所述方法还包括:
响应用户触发的针对所述待调度spark作业的测试操作,调用所述待调度spark作业对应的测试接口,对所述待调度spark作业的多个子作业的SQL语句进行测试,得到所述多个子作业的测试结果;
若所述多个子作业的测试结果符合各自对应的预设测试结果,则执行基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度的步骤;
若所述多个子作业的测试结果中存在至少一个子作业的测试结果不符合对应的预设测试结果,则基于所述至少一个子作业对应的测试结果与所述至少一个子作业对应的预设测试结果之间的差异,对所述至少一个子作业的SQL语句进行调整,直至所述至少一个子作业对应的测试结果符合所述至少一个子作业对应的预设测试结果。
7.根据权利要求6所述的方法,其特征在于,所述对所述待调度spark作业的多个子作业的SQL语句进行测试,得到所述多个子作业的测试结果,包括:
针对任意一个子作业:
识别所述子作业的SQL语句,得到所述SQL语句中的测试参数信息;
从所述子作业的测试依赖数据表中选择所述测试参数信息对应的目标测试依赖数据;其中,所述测试依赖数据表的测试依赖数据的更新日期不早于所述子作业的测试参考日期;所述参考测试日期是基于所述子作业的测试日期与所述测试依赖数据表的偏移值确定的;所述偏移值用于表征子作业的测试日期与所述测试依赖数据表的测试依赖数据的更新日期之间的最大差值;
将所述目标测试依赖数据替换所述SQL语句中的测试参数信息,得到所述子作业的目标测试SQL语句;
运行所述子作业的目标测试SQL语句,得到所述子作业对应的测试结果。
8.一种spark作业的调度装置,其特征在于,所述装置包括:
获取单元,用于获取待调度spark作业的多个子作业,以及各所述子作业对应的配置数据;所述配置数据包括:所述子作业的顺序号、所述子作业的依赖数据表、以及所述子作业的SQL语句;
调度单元,用于基于所述多个子作业各自对应的顺序号,依次对所述多个子作业进行调度;其中,每调度一个子作业,执行以下操作:
基于所述子作业的调度日期,确定所述子作业的依赖数据表中的依赖数据的更新日期符合预设规则时,识别所述子作业的SQL语句,得到所述SQL语句中的参数信息;
从所述依赖数据表中选择所述参数信息对应的目标依赖数据;
将所述目标依赖数据替换所述SQL语句中的参数信息,得到所述子作业的目标SQL语句;
运行所述子作业的目标SQL语句,得到所述子作业对应的执行结果。
9.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-7中任一项所述的spark作业的调度方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行如权利要求1-7中任一项所述的spark作业的调度方法。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述如权利要求1-7中任一项所述的spark作业的调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311053768.0A CN117076080A (zh) | 2023-08-21 | 2023-08-21 | 一种spark作业的调度方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311053768.0A CN117076080A (zh) | 2023-08-21 | 2023-08-21 | 一种spark作业的调度方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117076080A true CN117076080A (zh) | 2023-11-17 |
Family
ID=88714802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311053768.0A Pending CN117076080A (zh) | 2023-08-21 | 2023-08-21 | 一种spark作业的调度方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076080A (zh) |
-
2023
- 2023-08-21 CN CN202311053768.0A patent/CN117076080A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021147288A1 (zh) | 一种容器集群管理方法、装置及系统 | |
US20190208004A1 (en) | Beacon-based distributed data processing platform | |
US8832130B2 (en) | System and method for implementing on demand cloud database | |
CN108304201B (zh) | 对象更新方法、装置及设备 | |
CN107590188B (zh) | 一种自动化垂直细分领域的爬虫爬取方法及其管理系统 | |
CN105830049A (zh) | 自动化实验平台 | |
US7809882B1 (en) | Session independent backend data cache system | |
CN104954453A (zh) | 基于云计算的数据挖掘rest服务平台 | |
CN105468720A (zh) | 集成分布式数据处理系统的方法、相应系统及其数据处理方法 | |
CN112364110A (zh) | 元数据管理方法、装置、设备及计算机存储介质 | |
CN113037891B (zh) | 边缘计算系统中有状态应用的访问方法、装置及电子设备 | |
CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
Nguyen et al. | Prefetching-based metadata management in advanced multitenant hadoop | |
CN113360581A (zh) | 数据处理方法、装置及存储介质 | |
CN109586970B (zh) | 资源分配方法、装置及系统 | |
CN113065801A (zh) | 组织架构管理方法、装置、设备及存储介质 | |
CN116467315A (zh) | 行为数据的分析方法、装置、设备及存储介质 | |
CN111104548A (zh) | 一种数据反馈方法、系统及存储介质 | |
CN116450753A (zh) | 一种海关业务数据结构化管理方法、装置、计算机设备组及存储介质 | |
CN117076080A (zh) | 一种spark作业的调度方法、装置、设备及介质 | |
CN115455006A (zh) | 数据处理方法、数据处理装置、电子设备及存储介质 | |
US20210357196A1 (en) | Automated Deployment of Analytic Models | |
CN113553320B (zh) | 数据质量监控方法及装置 | |
KR101638048B1 (ko) | 맵리듀스를 이용한 sql 질의처리방법 | |
CN117390040B (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 |