CN113094122A - 数据处理脚本的执行方法和装置 - Google Patents
数据处理脚本的执行方法和装置 Download PDFInfo
- Publication number
- CN113094122A CN113094122A CN202110495771.2A CN202110495771A CN113094122A CN 113094122 A CN113094122 A CN 113094122A CN 202110495771 A CN202110495771 A CN 202110495771A CN 113094122 A CN113094122 A CN 113094122A
- Authority
- CN
- China
- Prior art keywords
- script
- executed
- sub
- scripts
- execution
- 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
- 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/44568—Immediately runnable code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种数据处理脚本的执行方法和装置,方法包括,根据目标语法规则(编写待执行脚本的计算机语言的语法规则)解析待执行脚本,得到待执行脚本的逻辑架构(包括多个执行单元和各个执行单元之间的连接关系);根据待执行脚本的逻辑架构,以及待执行脚本的输入数据名称和输出数据名称,将待执行脚本拆分为多个子脚本;根据待执行脚本的逻辑架构,确定每两个子脚本之间的执行逻辑;每两个子脚本之间的执行逻辑为并行执行或者顺序执行;按执行逻辑执行多个子脚本,得到待执行脚本的输出数据。本方案将待执行脚本拆分为多个子脚本,在执行这些子脚本时,就可以对其中执行逻辑为并行执行的多个子脚本同时执行,从而提高待执行脚本的执行效率。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据处理脚本的执行方法和装置。
背景技术
在本发明中,数据处理,是指从数据库存储的大量的、可能是杂乱无章的、难以理解的数据中抽取和/或推导出具有一定意义和价值的数据的过程。为了实现对大批量数据的处理,常常需要用到脚本。脚本,又称计算机脚本,是指人工按照一定格式和语法编写的计算机可执行文件,编写并利用计算机执行数据处理脚本,可以让计算机自动完成特定的数据处理任务。
目前在数据处理领域,对脚本的执行方法一般是在获取到人工编写的脚本后,直接将该脚本加载到服务器中执行。然而,对于一些复杂度较高的数据处理任务,人工编写的脚本被直接执行时,其执行效率较低。
发明内容
针对上述现有技术的问题,本发明提供一种数据处理脚本的执行方法和装置,以提高数据处理脚本的执行效率。
本发明第一方面提供一种数据处理脚本的执行方法,包括:
获取待执行脚本;
根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构;其中,所述目标语法规则,指代用于编写所述待执行脚本的计算机语言的语法规则;所述待执行脚本的逻辑架构,包括所述待执行脚本的多个执行单元,以及各个所述执行单元之间的连接关系;
根据所述待执行脚本的逻辑架构,以及所述待执行脚本的输入数据名称和输出数据名称,将所述待执行脚本拆分为多个子脚本;其中,每个所述的子脚本的输入数据名称和输出数据名称,根据所述待执行脚本的输入数据名称和输出数据名称确定;
根据所述待执行脚本的逻辑架构,确定每两个所述子脚本之间的执行逻辑;其中,每两个所述子脚本之间的执行逻辑为并行执行或者顺序执行;
按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到所述待执行脚本的输出数据。
可选的,所述根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构之前,还包括:
判断缓存区是否有所述待执行脚本匹配的优化后脚本;
若是,读取所述待执行脚本匹配的优化后脚本,按所述待执行脚本匹配的优化后脚本中包含的执行逻辑,执行所述待执行脚本匹配的优化后脚本中的各个子脚本;
若否,执行所述根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构;
其中,所述根据所述待执行脚本的逻辑架构,确定每两个所述子脚本之间的执行逻辑之后,还包括:
将各个所述子脚本,以及每两个所述子脚本之间的执行逻辑汇总为所述待执行脚本匹配的优化后脚本,并将所述待执行脚本匹配的优化后脚本存入缓存区。
可选的,所述按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到所述待执行脚本的输出数据,包括:
按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到每个所述子脚本的输出数据;
执行预先生成的汇总脚本,以将各个所述子脚本的输出数据汇总为所述待执行脚本的输出数据;其中,所述汇总脚本根据各个所述子脚本以及每两个所述子脚本之间的执行逻辑生成。
可选的,所述按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到每个所述子脚本的输出数据,包括:
为每一个所述子脚本配置对应的运行时序和运行资源;
按每两个所述子脚本之间的执行逻辑,利用各个所述子脚本对应的运行时序和运行资源执行各个所述子脚本,得到每个所述子脚本的输出数据。
可选的,所述根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构,包括:
在所述待执行脚本中识别得到多个语法关键字;其中,所述语法关键字由目标语法规则指定;
根据所述语法关键字和所述目标语法规则,确定所述待执行脚本的逻辑架构。
本发明第二方面提供一种数据处理脚本的执行装置,包括:
获取单元,用于获取待执行脚本;
解析单元,用于根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构;其中,所述目标语法规则,指代用于编写所述待执行脚本的计算机语言的语法规则;所述待执行脚本的逻辑架构,包括所述待执行脚本的多个执行单元,以及各个所述执行单元之间的连接关系;
拆分单元,用于根据所述待执行脚本的逻辑架构,以及所述待执行脚本的输入数据名称和输出数据名称,将所述待执行脚本拆分为多个子脚本;其中,每个所述的子脚本的输入数据名称和输出数据名称,根据所述待执行脚本的输入数据名称和输出数据名称确定;
确定单元,用于根据所述待执行脚本的逻辑架构,确定每两个所述子脚本之间的执行逻辑;其中,每两个所述子脚本之间的执行逻辑为并行执行或者顺序执行;
执行单元,用于按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到所述待执行脚本的输出数据。
可选的,所述执行装置还包括:
判断单元,用于判断缓存区是否有所述待执行脚本匹配的优化后脚本;
若是,读取所述待执行脚本匹配的优化后脚本,按所述待执行脚本匹配的优化后脚本中包含的执行逻辑,执行所述待执行脚本匹配的优化后脚本中的各个子脚本;
若否,触发所述解析单元执行所述根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构;
缓存单元,用于将各个所述子脚本,以及每两个所述子脚本之间的执行逻辑汇总为所述待执行脚本匹配的优化后脚本,并将所述待执行脚本匹配的优化后脚本存入缓存区。
可选的,所述执行单元按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到所述待执行脚本的输出数据时,具体用于:
按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到每个所述子脚本的输出数据;
执行预先生成的汇总脚本,以将各个所述子脚本的输出数据汇总为所述待执行脚本的输出数据;其中,所述汇总脚本根据各个所述子脚本以及每两个所述子脚本之间的执行逻辑生成。
可选的,所述执行单元按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到每个所述子脚本的输出数据时,具体用于:
为每一个所述子脚本配置对应的运行时序和运行资源;
按每两个所述子脚本之间的执行逻辑,利用各个所述子脚本对应的运行时序和运行资源执行各个所述子脚本,得到每个所述子脚本的输出数据。
可选的,所述解析单元根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构时,具体用于:
在所述待执行脚本中识别得到多个语法关键字;其中,所述语法关键字由目标语法规则指定;
根据所述语法关键字和所述目标语法规则,确定所述待执行脚本的逻辑架构。
本发明提供一种数据处理脚本的执行方法和装置,方法包括,获取待执行脚本;根据目标语法规则解析待执行脚本,得到待执行脚本的逻辑架构;其中,目标语法规则,指代用于编写待执行脚本的计算机语言的语法规则;待执行脚本的逻辑架构,包括待执行脚本的多个执行单元,以及各个执行单元之间的连接关系;根据待执行脚本的逻辑架构,以及待执行脚本的输入数据名称和输出数据名称,将待执行脚本拆分为多个子脚本;其中,每个的子脚本的输入数据名称和输出数据名称,根据待执行脚本的输入数据名称和输出数据名称确定;根据待执行脚本的逻辑架构,确定每两个子脚本之间的执行逻辑;其中,每两个子脚本之间的执行逻辑为并行执行或者顺序执行;按每两个子脚本之间的执行逻辑,执行多个子脚本,得到待执行脚本的输出数据。本方案将待执行脚本拆分为多个子脚本,在执行这些子脚本时,就可以对其中执行逻辑为并行执行的多个子脚本同时执行,从而提高待执行脚本的执行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的数据处理脚本的执行方法的流程图;
图2为本申请实施例提供的由待执行脚本解析得到的逻辑架构的示意图;
图3为本申请实施例提供的拆分后的多个子脚本的示意图;
图4为本申请实施例提供的数据处理脚本的执行装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
数据处理,是指从大量的、可能是杂乱无章的、难以理解的数据中抽取并推导出对于某些特定的用户来说是有价值、有意义的数据的过程。
脚本:利用特定的计算机语言,按一定格式编写的,计算机可执行的文件。
并行:同一时间段内多个可执行程序或文件在同时运行。
依赖:本节点的执行需要上一节点的结果才能开始执行。
现有的数据处理方法是直接将人工编写好的数据处理脚本(即待执行脚本)加载到用于服务器中执行。数据处理脚本的执行速度除了与数据库服务器性能、处理的数据量等因素相关之外,还与数据处理脚本的质量、合理性等密切相关。一是随者现有的生成数据处理脚本的图形化、界面化、可视化工具增多,降低了数据处理的开发门槛,但是受使用者的水平限制,人工编写的脚本,特别是针对复杂度较高的数据处理任务而编写的脚本,往往存在质量和合理性较差的问题,导致脚本被直接执行时,执行效率较低,无法快速的完成大批量数据的处理。
二是大量的人才缺口导致数据处理从业者缺乏有效的业务与技术处理知识来优化数据处理脚本。
三是随着大数据应用的蓬勃发展,数据处理的复杂度不断攀升,单纯的通过人工手动进行脚本调优的做法难以标准化也具有极大的局限性。不可持续的解决方案就是通过增加数据处理的并发度来提高任务处理的能力,但同时也严重的降低了数据处理脚本的处理效率。
目前在相关领域,只能通过数据分析专家人工分析数据加工处理脚本,在充分了解脚本的业务处理逻辑的情况,手工调整数据脚本的处理逻辑,也就是手动对待执行脚本进行优化和调整,暂无自动优化待执行脚本的方案。
针对上述现有技术的问题,本发明提供一种数据处理脚本的执行方法和装置,通过对多步骤并且执行时间长的数据处理脚本进行智能优化以便提升其执行效率。本方法和装置能够确定数据处理步骤之间的依赖关系,并将数据处理的脚本解析分解为能够并发的子脚本,智能对多个子脚本进行调度配置,对其中可以并行执行的多个子脚本同时执行,对需要顺序执行的子脚本则依次将各子脚本放入数据库中执行,得到最终结果。
本发明是对多步骤并且执行时间长的数据处理脚本进行智能优化以便提升其执行效率。本方法和装置能够确定数据处理步骤之间的依赖关系,并将数据处理的脚本解析分解为能够并发的子脚本,智能对多个子脚本进行调度配置,对其中可以并行执行的多个子脚本同时执行,对需要顺序执行的子脚本则依次将各子脚本放入数据库中执行,得到最终结果。本发明通过自动解析数据处理脚本内容,自动解析出能够并发执行的语句,并将语句封装成各个子脚本进行智能调度执行,并封装最终结果,自动地、高效地提升了数据加工脚本的执行效率,适用于多步骤并且执行时间长的数据加工脚本优化。
请参考图1,本申请提供的数据处理脚本的执行方法,可以包括如下步骤:
S101、获取待执行脚本。
开发人员可以针对当前的数据处理需求,在终端设备编写用于实现该需求的脚本,然后将编写好的脚本上传到脚本服务器。步骤S101所述的待执行脚本,即是上传到脚本服务器且尚未被执行的脚本。
S102、根据目标语法规则解析待执行脚本,得到待执行脚本的逻辑架构。
其中,目标语法规则,指代用于编写待执行脚本的计算机语言(即待执行脚本的实现语言)的语法规则;待执行脚本的逻辑架构,包括待执行脚本的多个执行单元,以及各个执行单元之间的连接关系。
可选的,步骤S102,即根据目标语法规则解析待执行脚本,得到待执行脚本的逻辑架构,可以包括:
在待执行脚本中识别得到多个语法关键字;其中,语法关键字由目标语法规则指定;
根据语法关键字和目标语法规则,确定待执行脚本的逻辑架构。
脚本可以采用任意一种计算机语言来编写,并且,对于特定的计算机语言,其语法规则通常是固定不变的,因此,可以预先在用于执行本方法的装置中设置一些常见语言(指经常用于编写脚本的计算机语言)的语法规则。
这样,执行步骤S102时,就可以根据待执行脚本的实现语言读取出对应的目标语法规则,然后根据目标语法规则进行解析。
待执行脚本的执行单元,包括数据处理,数据合并和数据联合。其中,数据处理,是指对单张数据表进行条件过滤、字段选择、去重、清洗、聚类、代码转换、公式计算等操作;数据合并,是指对两个及以上子查询的结果通过相同的主键进行关联,主要有内关联、左关联、右关联、全关联;数据联合,是指将两个及以上子查询的字段结构相同时纵向联合到一起。每一个执行单元均由脚本中的一个或多个语句构成,对于特定的计算机语言,各个执行单元中的语句会包含该计算机语言所定义的特定语法关键字。因此,可以通过识别待执行脚本中各个语句的语法关键字,来确定出各个语句分别属于待执行脚本的哪个执行单元。
以数据处理最常使用的PostgreSQL语言为例。构成数据处理单元的语句会包含where、group、case、having、like、in、null等语法关键字中的任意一个或多个;构成数据合并单元的语句会包含innerjoin、leftjoin、rightjoin、outer join等等语法关键字中的任意一个或多个;构成数据联合单元的语句会包含union关键字。因此,可以通过识别待执行脚本对应的语法关键字,来将待执行脚本划分为多个执行单元。
识别出执行单元后,需要确定执行单元间的连接关系。执行单元间的连接关系,也可以称为执行单元间的依赖关系,对于特定的计算机语言,执行单元间的依赖关系一般会采用特定语法结构来表示。仍然以PostgreSQL语言,假设有两个数据处理单元,分别记为数据处理1和数据处理2,以及一个数据合并单元,记为数据合并1,若数据合并1需要将数据处理1的输出和数据处理2的输出进行合并,即数据合并1依赖于数据处理1和数据处理2,则该脚本中数据合并1包含的语句可以是:
结果1joinon结果2。
其中结果1表示数据处理1的输出,结果2表示数据处理2的输出。因此,通过识别上述语句就可以确定数据合并1,数据处理1和数据处理2之间的连接关系(依赖关系)。
假设有一个待执行脚本需要执行的功能是,就是分别对A,B,C,D和E表进行单独处理,然后将A表和B表的处理结果合并,将C、D、E表的处理结果合并,两个合并的结果再进行数据联合,通过步骤S102,可以解析出该待执行脚本的逻辑架构,如图2所示。其中数据处理1至数据处理5分别表示用于处理A,B,C,D和E表的执行单元,数据合并1用于合并A表和B表的处理结果,数据合并2用于合并C、D、E表的处理结果,数据联合1用于将数据合并1和数据合并2合并后的结果联合,数据处理6则用于数据数据联合1联合后的结果。
S103、根据待执行脚本的逻辑架构,以及待执行脚本的输入数据名称和输出数据名称,将待执行脚本拆分为多个子脚本。
其中,每个的子脚本的输入数据名称和输出数据名称,根据待执行脚本的输入数据名称和输出数据名称确定。
一个完整的脚本,需要包括输入数据名称(用于指代该脚本的输入),输出数据名称(用于指代该脚本的输出)和用于执行的语句,以图2为例,图2所示的逻辑架构对应的待执行脚本,其输入数据名称依次是A,B,C,D和E表,输出数据名称为最终结果1,需要说明的是,在待执行脚本被实际执行前,上述A,B,C,D和E表,以及最终结果1,均不包含实质内容,而仅仅是用于指代待执行脚本的输入和输出的名称。
为了执行步骤S103,可以先将待执行脚本的输入数据名称和输入参数名称标注存储在输入配置表中,将待执行脚本的输出数据名称标注存储在输出配置表中,以图2所示的逻辑架构为例,可以将A,B,C,D和E表标注存储在输入配置表中,若待执行脚本执行时需要用到特定参数,则这些参数也存储在输入配置表中,将最终结果1标注存储在输出配置表中。
完成上述标注存储的过程后,可以将图2所示的逻辑架构按如下方式拆分为多个子脚本:
针对每一个执行单元,第一方面判断该执行单元执行时所用的数据是否包含在输入配置表记录的待执行脚本的输入数据名称,第二方面判断该执行单元的输出是否包含在输出配置表记录的待执行脚本的输出数据名称。
若第一方面的判断结果为是,将输入配置表中记录的输入数据名称确定为该执行单元的输入,反之,若第一方面的判断结果为否,则为这个执行单元配置一个临时输入(即生成一个作为输入的临时表)。
若第二方面的判断结果为是,将输出配置表中记录的输出数据名称确定为该执行单元的输出,反之,若第二方面的判断结果为否,则为这个执行单元配置一个临时输出(即生成一个作为输出的临时表)。
然后,针对图2所示的逻辑架构中每两个具有依赖关系的执行单元,将这两个执行单元的临时输入和临时输出统一,即用同一个数据名称表示前一个执行单元的临时输出和后一个执行单元的临时输入。
这一过程相当于,对于具有依赖关系的上一子脚本生成临时表,下一脚本基于上一子脚本临时表进行数据处理,最终对各子脚本的结果集进行整合。
最后,对于每一个执行单元,将该执行单元的输入,输出和该执行单元划分为一个子脚本。
以图2所示的逻辑架构为例,通过步骤S103,可以将图2所示的逻辑架构对应的待执行脚本,拆分为图3所示的9个子脚本,依次记为脚本1至脚本9。
在具体的拆分过程中,结合图2,可以看出数据处理1至数据处理5的输入包含在整个待执行脚本的输入数据名称中,因此直接将A,B,C,D和E表确定为数据处理1至数据处理5,同理,可以将最终结果1确定为数据处理6的输出。
之后,对于数据处理1至数据处理5,这些执行单元的输出不属于最终结果1,于是针对数据处理1至数据处理5分别配置5个临时输出,数据合并1和数据合并2的输入不属于待执行脚本的输入数据名称(即A,B,C,D和E表),因此,分别为数据合并1配置两个临时输入,为数据合并2配置三个临时输入。
由图2所示的逻辑架构可以发现,数据合并1和数据处理1、2间具有依赖关系,所以可以确定数据处理1、2的输出应该与数据合并1的输入等同,于是为数据处理1、2的临时输出和数据合并1的临时输入配置相同名称,即配置临时结果A1作为数据处理1的临时输出,配置临时结果B1作为数据处理2的临时输出,同时,临时结果A1和临时结果B1又作为数据合并1的临时输入。由此,A表,数据处理1和临时结果A1就构成脚本1;B表,数据处理2和临时结果B1就构成脚本2。
其他子脚本的拆分方式类似,具体过程可以参考图2和图3理解,此处不再详述。
S104、根据待执行脚本的逻辑架构,确定每两个子脚本之间的执行逻辑。
其中,每两个子脚本之间的执行逻辑为并行执行或者顺序执行。
一般的,在步骤S104中,可以将位于数据联合或数据合并之前的多个子脚本之间的执行逻辑确定为并行执行,将数据合并(以及数据联合)对应的子脚本与其前后的子脚本之间的执行逻辑确定为顺序执行。
结合图2和图3,可以看出,脚本1至脚本5位于数据合并1和数据合并2之前,于是脚本1至脚本5的执行逻辑为并行执行,脚本6和脚本7位于数据联合1之前,脚本6和脚本7之间的执行逻辑为并行执行,剩余各个子脚本间的执行逻辑为顺序执行,最终,图3所示的各个子脚本的执行逻辑如下:
脚本1至脚本5并行执行,脚本6和脚本7并行执行,脚本1、2与脚本6顺序执行,即先执行脚本1、2,然后执行脚本6,脚本3至脚本5与脚本7顺序执行,即先执行脚本3至脚本5,后执行脚本7,脚本7和脚本8顺序执行,脚本8和脚本9顺序执行。
在执行步骤S104之后,各个子脚本之间的执行逻辑可以分别标注存储到并发和依赖关系配置表。
S105、按每两个子脚本之间的执行逻辑,执行多个子脚本,得到待执行脚本的输出数据。
可选的,为了确保各个子脚本能够顺利执行,可以先生成用于执行这些子脚本的调度配置,也就是为这些子脚本分配运行所需的运行时序和运行资源,也就是说,步骤S105具体可以包括:
为每一个子脚本配置对应的运行时序和运行资源;
按每两个子脚本之间的执行逻辑,利用各个子脚本对应的运行时序和运行资源执行各个子脚本,得到每个子脚本的输出数据。
最后再由一个或多个子脚本的输出数据确定出整个待执行脚本的输出数据。
对于图3所示的各个子脚本,执行这些子脚本的具体过程可以是:
创建线程1至线程5,利用线程1至线程5并行执行脚本1至脚本5,每个线程用于执行对应的编号的脚本。获得脚本1至脚本5的输出后,利用线程1和线程2并行执行脚本6和脚本7,获得脚本6和脚本7的输出后,利用线程1顺序执行脚本8和脚本9,最后得到最终结果1。
以图3为例,图3所示的各个子脚本按照既定的执行逻辑执行后,得到的输出数据,就是图3所示的最终结果1。
需要说明的是,待执行脚本拆分得到的多个子脚本按照确定的执行逻辑执行完毕后,等同于待执行脚本被执行了一次,此时得到的输出数据,是具有前述输出数据名称的实质内容。例如,前述输出数据名称,可能只是一个名称为输出表X的空白表格,其中不包含数据,而在执行步骤S105后,则可以得到一个名称为输出表X且包含特定数据的表格。
一些情况下,待执行脚本拆分得到的某个子脚本的输出,等同于拆分前整个待执行脚本的输出,例如,图3中脚本9输出的最终结果1,就是原本的待执行脚本所要获得的最终结果1,这种情况下直接将该脚本的输出数据作为整个待执行脚本的输出数据即可。
另一些情况下,整个待执行脚本的输出数据由拆分得到的若干个子脚本的输出数据组成,此时,需要在执行步骤S105之前,先生成一个汇总脚本(收尾脚本),然后,在执行步骤S105时,按如下过程执行:
按每两个子脚本之间的执行逻辑,执行多个子脚本,得到每个子脚本的输出数据;
执行预先生成的汇总脚本,以将各个子脚本的输出数据汇总为待执行脚本的输出数据。
其中,汇总脚本根据各个子脚本以及每两个子脚本之间的执行逻辑生成。
其中,在执行了步骤S104,即将待执行脚本拆分为多个子脚本并确定了子脚本之间的执行逻辑之后,还可以执行如下步骤:
将各个子脚本,以及每两个子脚本之间的执行逻辑汇总为待执行脚本匹配的优化后脚本,并将待执行脚本匹配的优化后脚本存入缓存区。
通过将优化后脚本存入缓存区,当后续再次获得同样的待执行脚本时,就可以直接从缓存区读取出优化后脚本,然后直接执行步骤S105,也就是按既定的执行逻辑执行各个子脚本。
也就是说,若设置了用于存储优化后脚本的缓存区,可选的,在执行步骤S102,即根据目标语法规则解析待执行脚本,得到待执行脚本的逻辑架构之前,本方法还可以包括:
判断缓存区是否有待执行脚本匹配的优化后脚本;
若是,读取待执行脚本匹配的优化后脚本,按待执行脚本匹配的优化后脚本中包含的执行逻辑,执行待执行脚本匹配的优化后脚本中的各个子脚本;
若否,执行根据目标语法规则解析待执行脚本,得到待执行脚本的逻辑架构步骤,即执行步骤S102。
这样,如果缓存区已经存储有优化后脚本,则可以省去对待执行脚本的解析和拆分等步骤,直接按既定执行逻辑执行优化后脚本中的各个子脚本即可。
本发明提供一种数据处理脚本的执行方法,方法包括,获取待执行脚本;根据目标语法规则解析待执行脚本,得到待执行脚本的逻辑架构;其中,目标语法规则,指代用于编写待执行脚本的计算机语言的语法规则;待执行脚本的逻辑架构,包括待执行脚本的多个执行单元,以及各个执行单元之间的连接关系;根据待执行脚本的逻辑架构,以及待执行脚本的输入数据名称和输出数据名称,将待执行脚本拆分为多个子脚本;其中,每个的子脚本的输入数据名称和输出数据名称,根据待执行脚本的输入数据名称和输出数据名称确定;根据待执行脚本的逻辑架构,确定每两个子脚本之间的执行逻辑;其中,每两个子脚本之间的执行逻辑为并行执行或者顺序执行;按每两个子脚本之间的执行逻辑,执行多个子脚本,得到待执行脚本的输出数据。本方案将待执行脚本拆分为多个子脚本,在执行这些子脚本时,就可以对其中执行逻辑为并行执行的多个子脚本同时执行,从而提高待执行脚本的执行效率。
本发明关键在于实现对待执行脚本的智能解析,智能解析数据处理脚本、自动将待执行脚本拆分成多个子脚本,合理编排多个子脚本的执行次序,精准组装多个子脚本返回结果,从而通过脚本的拆分组合自动化的实现脚本性能调优,提升数据处理运行速度和效率,替代了人工性能调优的做法,从而达到数据运行处理效率的提升。
结合本申请实施例提供的数据处理脚本的执行方法,本申请实施例还提供一种数据处理脚本的执行装置,请参考图4,该装置可以包括如下单元:
获取单元401,用于获取待执行脚本。
解析单元402,用于根据目标语法规则解析待执行脚本,得到待执行脚本的逻辑架构。
其中,目标语法规则,指代用于编写待执行脚本的计算机语言的语法规则;待执行脚本的逻辑架构,包括待执行脚本的多个执行单元,以及各个执行单元之间的连接关系。
拆分单元403,用于根据待执行脚本的逻辑架构,以及待执行脚本的输入数据名称和输出数据名称,将待执行脚本拆分为多个子脚本。
其中,每个的子脚本的输入数据名称和输出数据名称,根据待执行脚本的输入数据名称和输出数据名称确定。
确定单元404,用于根据待执行脚本的逻辑架构,确定每两个子脚本之间的执行逻辑。
其中,每两个子脚本之间的执行逻辑为并行执行或者顺序执行。
执行单元405,用于按每两个子脚本之间的执行逻辑,执行多个子脚本,得到待执行脚本的输出数据。
可选的,执行装置还包括:
判断单元406,用于判断缓存区是否有待执行脚本匹配的优化后脚本;
若是,读取待执行脚本匹配的优化后脚本,按待执行脚本匹配的优化后脚本中包含的执行逻辑,执行待执行脚本匹配的优化后脚本中的各个子脚本;
若否,触发解析单元402执行根据目标语法规则解析待执行脚本,得到待执行脚本的逻辑架构;
缓存单元407,用于将各个子脚本,以及每两个子脚本之间的执行逻辑汇总为待执行脚本匹配的优化后脚本,并将待执行脚本匹配的优化后脚本存入缓存区。
可选的,执行单元405按每两个子脚本之间的执行逻辑,执行多个子脚本,得到待执行脚本的输出数据时,具体用于:
按每两个子脚本之间的执行逻辑,执行多个子脚本,得到每个子脚本的输出数据;
执行预先生成的汇总脚本,以将各个子脚本的输出数据汇总为待执行脚本的输出数据;其中,汇总脚本根据各个子脚本以及每两个子脚本之间的执行逻辑生成。
可选的,执行单元405按每两个子脚本之间的执行逻辑,执行多个子脚本,得到每个子脚本的输出数据时,具体用于:
为每一个子脚本配置对应的运行时序和运行资源;
按每两个子脚本之间的执行逻辑,利用各个子脚本对应的运行时序和运行资源执行各个子脚本,得到每个子脚本的输出数据。
可选的,解析单元402根据目标语法规则解析待执行脚本,得到待执行脚本的逻辑架构时,具体用于:
在待执行脚本中识别得到多个语法关键字;其中,语法关键字由目标语法规则指定;
根据语法关键字和目标语法规则,确定待执行脚本的逻辑架构。
本申请提供的数据处理脚本的执行装置,其具体工作原理可以参考本申请实施例提供的数据处理脚本的执行方法中的相关步骤,此处不再赘述。
本发明提供一种数据处理脚本的执行装置,其中,获取单元401获取待执行脚本;解析单元402根据目标语法规则解析待执行脚本,得到待执行脚本的逻辑架构;其中,目标语法规则,指代用于编写待执行脚本的计算机语言的语法规则;待执行脚本的逻辑架构,包括待执行脚本的多个执行单元,以及各个执行单元之间的连接关系;拆分单元403根据待执行脚本的逻辑架构,以及待执行脚本的输入数据名称和输出数据名称,将待执行脚本拆分为多个子脚本;其中,每个的子脚本的输入数据名称和输出数据名称,根据待执行脚本的输入数据名称和输出数据名称确定;确定单元404根据待执行脚本的逻辑架构,确定每两个子脚本之间的执行逻辑;其中,每两个子脚本之间的执行逻辑为并行执行或者顺序执行;执行单元405按每两个子脚本之间的执行逻辑,执行多个子脚本,得到待执行脚本的输出数据。本方案将待执行脚本拆分为多个子脚本,在执行这些子脚本时,就可以对其中执行逻辑为并行执行的多个子脚本同时执行,从而提高待执行脚本的执行效率。
本申请实施例还提供一种计算机存储介质,用于存储计算机程序,存储的计算机程序被执行时,具体用于实现本申请任一实施例所提供的数据处理脚本的执行方法。
本申请实施例还提供一种电子设备,如图5所示,该电子设备包括存储器501和处理器502。
其中,存储器501用于存储计算机程序。
处理器502用于执行上述计算机程序,具体用于实现本申请任一实施例所提供的数据处理脚本的执行方法。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据处理脚本的执行方法,其特征在于,包括:
获取待执行脚本;
根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构;其中,所述目标语法规则,指代用于编写所述待执行脚本的计算机语言的语法规则;所述待执行脚本的逻辑架构,包括所述待执行脚本的多个执行单元,以及各个所述执行单元之间的连接关系;
根据所述待执行脚本的逻辑架构,以及所述待执行脚本的输入数据名称和输出数据名称,将所述待执行脚本拆分为多个子脚本;其中,每个所述的子脚本的输入数据名称和输出数据名称,根据所述待执行脚本的输入数据名称和输出数据名称确定;
根据所述待执行脚本的逻辑架构,确定每两个所述子脚本之间的执行逻辑;其中,每两个所述子脚本之间的执行逻辑为并行执行或者顺序执行;
按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到所述待执行脚本的输出数据。
2.根据权利要求1所述的执行方法,其特征在于,所述根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构之前,还包括:
判断缓存区是否有所述待执行脚本匹配的优化后脚本;
若是,读取所述待执行脚本匹配的优化后脚本,按所述待执行脚本匹配的优化后脚本中包含的执行逻辑,执行所述待执行脚本匹配的优化后脚本中的各个子脚本;
若否,执行所述根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构;
其中,所述根据所述待执行脚本的逻辑架构,确定每两个所述子脚本之间的执行逻辑之后,还包括:
将各个所述子脚本,以及每两个所述子脚本之间的执行逻辑汇总为所述待执行脚本匹配的优化后脚本,并将所述待执行脚本匹配的优化后脚本存入缓存区。
3.根据权利要求1所述的执行方法,其特征在于,所述按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到所述待执行脚本的输出数据,包括:
按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到每个所述子脚本的输出数据;
执行预先生成的汇总脚本,以将各个所述子脚本的输出数据汇总为所述待执行脚本的输出数据;其中,所述汇总脚本根据各个所述子脚本以及每两个所述子脚本之间的执行逻辑生成。
4.根据权利要求3所述的执行方法,其特征在于,所述按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到每个所述子脚本的输出数据,包括:
为每一个所述子脚本配置对应的运行时序和运行资源;
按每两个所述子脚本之间的执行逻辑,利用各个所述子脚本对应的运行时序和运行资源执行各个所述子脚本,得到每个所述子脚本的输出数据。
5.根据权利要求1所述的执行方法,其特征在于,所述根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构,包括:
在所述待执行脚本中识别得到多个语法关键字;其中,所述语法关键字由目标语法规则指定;
根据所述语法关键字和所述目标语法规则,确定所述待执行脚本的逻辑架构。
6.一种数据处理脚本的执行装置,其特征在于,包括:
获取单元,用于获取待执行脚本;
解析单元,用于根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构;其中,所述目标语法规则,指代用于编写所述待执行脚本的计算机语言的语法规则;所述待执行脚本的逻辑架构,包括所述待执行脚本的多个执行单元,以及各个所述执行单元之间的连接关系;
拆分单元,用于根据所述待执行脚本的逻辑架构,以及所述待执行脚本的输入数据名称和输出数据名称,将所述待执行脚本拆分为多个子脚本;其中,每个所述的子脚本的输入数据名称和输出数据名称,根据所述待执行脚本的输入数据名称和输出数据名称确定;
确定单元,用于根据所述待执行脚本的逻辑架构,确定每两个所述子脚本之间的执行逻辑;其中,每两个所述子脚本之间的执行逻辑为并行执行或者顺序执行;
执行单元,用于按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到所述待执行脚本的输出数据。
7.根据权利要求6所述的执行装置,其特征在于,所述执行装置还包括:
判断单元,用于判断缓存区是否有所述待执行脚本匹配的优化后脚本;
若是,读取所述待执行脚本匹配的优化后脚本,按所述待执行脚本匹配的优化后脚本中包含的执行逻辑,执行所述待执行脚本匹配的优化后脚本中的各个子脚本;
若否,触发所述解析单元执行所述根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构;
缓存单元,用于将各个所述子脚本,以及每两个所述子脚本之间的执行逻辑汇总为所述待执行脚本匹配的优化后脚本,并将所述待执行脚本匹配的优化后脚本存入缓存区。
8.根据权利要求6所述的执行装置,其特征在于,所述执行单元按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到所述待执行脚本的输出数据时,具体用于:
按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到每个所述子脚本的输出数据;
执行预先生成的汇总脚本,以将各个所述子脚本的输出数据汇总为所述待执行脚本的输出数据;其中,所述汇总脚本根据各个所述子脚本以及每两个所述子脚本之间的执行逻辑生成。
9.根据权利要求6所述的执行装置,其特征在于,所述执行单元按每两个所述子脚本之间的执行逻辑,执行所述多个子脚本,得到每个所述子脚本的输出数据时,具体用于:
为每一个所述子脚本配置对应的运行时序和运行资源;
按每两个所述子脚本之间的执行逻辑,利用各个所述子脚本对应的运行时序和运行资源执行各个所述子脚本,得到每个所述子脚本的输出数据。
10.根据权利要求6所述的执行装置,其特征在于,所述解析单元根据目标语法规则解析所述待执行脚本,得到所述待执行脚本的逻辑架构时,具体用于:
在所述待执行脚本中识别得到多个语法关键字;其中,所述语法关键字由目标语法规则指定;
根据所述语法关键字和所述目标语法规则,确定所述待执行脚本的逻辑架构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110495771.2A CN113094122A (zh) | 2021-05-07 | 2021-05-07 | 数据处理脚本的执行方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110495771.2A CN113094122A (zh) | 2021-05-07 | 2021-05-07 | 数据处理脚本的执行方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113094122A true CN113094122A (zh) | 2021-07-09 |
Family
ID=76681620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110495771.2A Pending CN113094122A (zh) | 2021-05-07 | 2021-05-07 | 数据处理脚本的执行方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113094122A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115840571A (zh) * | 2023-02-21 | 2023-03-24 | 北京灵汐科技有限公司 | 任务编译的方法、编译器、计算机可读介质 |
-
2021
- 2021-05-07 CN CN202110495771.2A patent/CN113094122A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115840571A (zh) * | 2023-02-21 | 2023-03-24 | 北京灵汐科技有限公司 | 任务编译的方法、编译器、计算机可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983760B2 (en) | Source code generation from web-sourced snippets | |
US11494181B2 (en) | Automating generation of library suggestion engine models | |
CN107644323B (zh) | 一种面向业务流的智能审核系统 | |
CN112597373B (zh) | 一种基于分布式爬虫引擎的数据采集方法 | |
CN112394942B (zh) | 基于云计算的分布式软件开发编译方法及软件开发平台 | |
CN106611044B (zh) | 一种sql优化方法及设备 | |
CN106843849B (zh) | 一种基于文档的库函数的代码模型的自动合成方法 | |
CN112328489B (zh) | 测试用例生成方法、装置、终端设备和存储介质 | |
CN113986241B (zh) | 一种基于知识图谱的业务规则的配置方法以及装置 | |
CN112540862A (zh) | 一种接口文档数据生成方法、装置、设备及存储介质 | |
CN108170661B (zh) | 一种规则文本的管理方法及系统 | |
CN113094122A (zh) | 数据处理脚本的执行方法和装置 | |
CN110069455B (zh) | 一种文件合并方法及装置 | |
CN111142871A (zh) | 一种前端页面开发系统、方法、设备、介质 | |
CN111831288B (zh) | 一种自动生成Thrift IDL数据结构及自动转换函数的方法及系统 | |
CN114089980A (zh) | 编程处理方法、装置、解释器及非易失性存储介质 | |
CN113176999A (zh) | 基于分布式应用程序的软件测试方法及系统 | |
CN111723580A (zh) | 基于语音识别与图像识别的电力调度厂站信息图效验方法 | |
CN116450717B (zh) | 一种跨业务模块的数据整合方法及信息管理系统 | |
CN111221846B (zh) | 一种sql语句的自动翻译方法及装置 | |
CN113010400B (zh) | 计算机工程技术文档智能生成、复盘系统和方法 | |
CN116756184B (zh) | 数据库实例处理方法、装置、设备、存储介质及程序产品 | |
JP3290778B2 (ja) | トラブル分析支援装置 | |
CN117216092A (zh) | 一种优化tdsql脚本的方法、装置、设备及可读存储介质 | |
CN117493369A (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 |