掌桥专利:专业的专利平台
掌桥专利
首页

程序开发方法和装置、存储介质及电子装置

文献发布时间:2023-06-19 10:29:05


程序开发方法和装置、存储介质及电子装置

技术领域

本发明涉及数据计算技术领域,具体而言,涉及一种程序开发方法和装置、存储介质及电子装置。

背景技术

在大数据时代,对数据的实时处理需求越来越迫切,实时计算作业越来越多。在大数据计算中,开发人员可以使用相关的大数据计算框架,例如Spark及Flink开发实时计算程序以及完成实时计算作业。然而,在相关技术中,实时计算程序的开发需要开发人员深入学习并熟悉Spark及Flink等计算框架,以及了解其中的优化手段,才可以完成实时计算作业项目,并且由于不同的开发人员有不同的代码编写习惯,从而导致开发出的实时计算作业的代码维护和管理难度较大、且难以复用,因此相关技术中的程序开发效率较低。

针对相关技术中,程序开发效率较低的技术问题,尚未提出有效的技术方案。

发明内容

本发明实施例提供了一种程序开发方法和装置、存储介质及电子装置,以至少解决相关技术中程序开发效率较低的技术问题。

根据本发明的一个实施例,提供了一种程序开发方法,应用于终端,其特征在于,该方法包括:根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件,并生成所述目标计算作业的提交脚本;其中,所述配置文件还用于指示对所述目标计算作业的作业信息、所述计算引擎、所述数据源插件以及所述计算节点插件的配置;运行所述提交脚本以将所述目标计算作业提交到目标资源管理系统;根据所述配置文件对所述数据源插件和所述计算节点插件进行加载并实例化,通过所述计算引擎执行实例化后的数据源插件以从数据源获取数据,并通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算。

可选地,在根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件之前,所述方法还包括:建立目标计算框架,其中,所述目标计算框架包括多个数据源插件以及多个计算节点插件,所述多个数据源插件中的每个数据源插件用于从对应的一个数据源获取数据,所述多个计算节点插件中的每个计算节点插件用于执行数据计算。

可选地,所述配置文件还用于指示所述计算引擎向所述目标资源管理器申请的计算资源,以及使用所述计算资源执行所述目标计算作业。

可选地,所述通过所述计算引擎执行实例化后的数据源插件以从数据源获取源数据,包括:在所述配置文件指示为所述目标计算作业配置了多个数据源插件的情况下,通过所述计算引擎依次执行实例化后的所述多个数据源插件中的每个数据源插件,其中,所述每个数据源插件用于从对应的一个数据源中获取数据;在通过所述计算引擎依次执行实例化后的所述多个数据源插件中的每个数据源插件的过程中,将从每个数据源获取到的数据注册为对应的一个临时表。

可选地,在所述计算节点插件包括多个目标计算节点插件的情况下,所述配置文件还用于指示所述多个目标计算节点插件中的每个目标计算节点插件所依赖的临时表标识和结果表标识。

可选地,所述通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算,包括:重复执行以下操作,直至当前计算节点插件为所述多个目标计算节点插件中的最后一个目标计算节点插件,其中,所述当前计算节点插件被初始化为所述多个目标计算节点插件中的第一个目标计算节点插件:根据所述当前目标计算节点插件所依赖的临时表标识,确定并加载所述当前目标计算节点插件的输入数据;通过所述计算引擎执行所述当前目标计算节点插件对所述输入数据进行计算,并将输出的计算结果注册为所述当前目标计算节点插件的结果表标识所标识的临时表。

可选地,根据所述当前目标计算节点所依赖的临时表标识,确定并加载所述当前目标计算节点插件的输入数据,包括:在所述当前目标计算节点插件所依赖的临时表标识不为空的情况下,将所述当前目标计算节点插件所依赖的临时表标识所标识的数据表中的数据确定为所述当前目标计算节点插件的输入数据;在所述当前目标计算节点插件所依赖的临时表标识为空、且所述当前目标节点插件不为所述多个目标计算节点插件中的第一个插件的情况下,将所述多个目标计算节点插件中所述当前目标节点插件的前一个目标计算节点插件输出的计算结果确定为所述当前目标计算节点插件的输入数据;在所述当前目标计算节点插件所依赖的临时表标识为空、且所述当前目标节点插件为所述多个目标计算节点插件中的第一个插件的情况下,将所述计算引擎从至少一个数据源中的最后一个数据源获取到的源数据确定为所述当前目标计算节点插件的输入数据,其中,所述配置文件还用于指示至少一个所述数据源插件的配置,至少一个所述数据源插件中的每个数据源插件用于从所述至少一个数据源中的一个数据源中获取数据。

根据本发明的另一实施例,提供了一种程序开发装置,所述程序开发装置应用于终端,所述装置包括:解析模块,用于根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件,并生成所述目标计算作业的提交脚本;其中,所述配置文件还用于指示对所述目标计算作业的作业信息、所述计算引擎、所述数据源插件以及所述计算节点插件的配置;提交模块,用于运行所述提交脚本以将所述目标计算作业提交到目标资源管理系统;执行模块,用于根据所述配置文件对所述数据源插件和所述计算节点插件进行加载并实例化,通过所述计算引擎执行实例化后的数据源插件以从数据源获取数据,并通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算。

可选地,所述装置还包括建立模块,用于在根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件之前,建立目标计算框架,其中,所述目标计算框架包括多个数据源插件以及多个计算节点插件,所述多个数据源插件中的每个数据源插件用于从对应的一个数据源获取数据,所述多个计算节点插件中的每个计算节点插件用于执行数据计算。

可选地,所述配置文件还用于指示所述计算引擎向所述目标资源管理器申请的计算资源,以及使用所述计算资源执行所述目标计算作业。

可选地,所述执行模块,还用于:在所述配置文件指示为所述目标计算作业配置了多个数据源插件的情况下,通过所述计算引擎依次执行实例化后的所述多个数据源插件中的每个数据源插件,其中,所述每个数据源插件用于从对应的一个数据源中获取数据;在通过所述计算引擎依次执行实例化后的所述多个数据源插件中的每个数据源插件的过程中,将从每个数据源获取到的数据注册为对应的一个临时表。

可选地,在所述计算节点插件包括多个目标计算节点插件的情况下,所述配置文件还用于指示所述多个目标计算节点插件中的每个目标计算节点插件所依赖的临时表标识和结果表标识。

可选地,所述执行模块,还用于:重复执行以下操作,直至当前计算节点插件为所述多个目标计算节点插件中的最后一个目标计算节点插件,其中,所述当前计算节点插件被初始化为所述多个目标计算节点插件中的第一个目标计算节点插件:根据所述当前目标计算节点插件所依赖的临时表标识,确定并加载所述当前目标计算节点插件的输入数据;通过所述计算引擎执行所述当前目标计算节点插件对所述输入数据进行计算,并将输出的计算结果注册为所述当前目标计算节点插件的结果表标识所标识的临时表。

可选地,所述执行模块,还用于:在所述当前目标计算节点插件所依赖的临时表标识不为空的情况下,将所述当前目标计算节点插件所依赖的临时表标识所标识的数据表中的数据确定为所述当前目标计算节点插件的输入数据;在所述当前目标计算节点插件所依赖的临时表标识为空、且所述当前目标节点插件不为所述多个目标计算节点插件中的第一个插件的情况下,将所述多个目标计算节点插件中所述当前目标节点插件的前一个目标计算节点插件输出的计算结果确定为所述当前目标计算节点插件的输入数据;在所述当前目标计算节点插件所依赖的临时表标识为空、且所述当前目标节点插件为所述多个目标计算节点插件中的第一个插件的情况下,将所述计算引擎从至少一个数据源中的最后一个数据源获取到的源数据确定为所述当前目标计算节点插件的输入数据,其中,所述配置文件还用于指示至少一个所述数据源插件的配置,至少一个所述数据源插件中的每个数据源插件用于从所述至少一个数据源中的一个数据源中获取数据。

可选地,根据本发明的另一个实施例,提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述方法。

可选地,根据本发明的另一个实施例,提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法。

通过本发明,根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件,并生成所述目标计算作业的提交脚本;其中,所述配置文件还用于指示对所述目标计算作业的作业信息、所述计算引擎、所述数据源插件以及所述计算节点插件的配置;运行所述提交脚本以将所述目标计算作业提交到目标资源管理系统;根据所述配置文件对所述数据源插件和所述计算节点插件进行加载并实例化,通过所述计算引擎执行实例化后的数据源插件以从数据源获取数据,并通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算。由于可以通过配置计算引擎、数据源插件以及计算节点插件,从而可以以插件自动实例化加载的方式实现用于执行计算作业的程序的开发,因此,解决了相关技术中程序的开发效率较低的技术问题,提高了程序的开发效率,并且降低了计算作业的项目代码的维护和管理难度。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为根据本发明实施例的程序开发方法的流程图;

图2为根据本发明实施例的配置界面的示意图;

图3为根据本发明实施例配置数据源插件的示意图;

图4为根据本发明实施例配置目标计算节点插件的示意图;

图5为根据本发明实施例的程序开发方法形成的数据流程示意图;

图6为根据本发明实施例的执行目标计算节点插件的示意图;

图7为根据本发明又一实施例的程序开发方法的流程图;

图8为根据本发明实施例的程序开发装置的结构框图;

图9为根据本发明另一实施例的程序开发装置的结构框图;

图10为根据本发明实施例的一种可选的电子装置的结构示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

本发明实施例提供了一种程序开发方法,该方法应用于终端,图1为根据本发明实施例的程序开发方法的流程图,如图1所示,包括:

步骤S102,根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件,并生成所述目标计算作业的提交脚本;其中,所述配置文件还用于指示对所述目标计算作业的作业信息、所述计算引擎、所述数据源插件以及所述计算节点插件的配置;

步骤S104,运行所述提交脚本以将所述目标计算作业提交到目标资源管理系统;

步骤S106,根据所述配置文件对所述数据源插件和所述计算节点插件进行加载并实例化,通过所述计算引擎执行实例化后的数据源插件以从数据源获取数据,并通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算。

通过本发明,根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件,并生成所述目标计算作业的提交脚本;其中,所述配置文件还用于指示对所述目标计算作业的作业信息、所述计算引擎、所述数据源插件以及所述计算节点插件的配置;运行所述提交脚本以将所述目标计算作业提交到目标资源管理系统;根据所述配置文件对所述数据源插件和所述计算节点插件进行加载并实例化,通过所述计算引擎执行实例化后的数据源插件以从数据源获取数据,并通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算。由于可以通过配置计算引擎、数据源插件以及计算节点插件,从而可以以插件自动实例化加载的方式实现用于执行计算作业的程序的开发,因此,解决了相关技术中程序的开发效率较低的技术问题,提高了程序的开发效率,并且降低了计算作业的项目代码的维护和管理难度。

需要说明的是,上述实施例可以应用在大数据领域,并且可以应用于对实时计算任务的开发中,即可以应用在开发用于执行实时计算任务的程序中。作为一种可选的实施方式,上述实施例中的目标计算作业可以看作是一个实时计算程序,该程序用于执行目标计算作业,目标计算作业包括但不限于实时计算作业。

在上述实施例中,在所述根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件之前,所述方法还包括:建立目标计算框架,其中,所述目标计算框架包括多个数据源插件以及多个计算节点插件,所述多个数据源插件中的每个数据源插件用于从对应的一个数据源获取数据,所述多个计算节点插件中的每个计算节点插件用于执行数据计算。

其中,目标计算框架包括但不限于实时计算框架。在上述实施例中,通过预先建立目标计算框架,从而根据该目标计算框架提供的插件开发所需的程序,因此简化了程序的开发过程、提高了程序的开发效率。

需要说明的是,目标计算框架位于上述终端中,并且上述实施例中的程序开发方法可以由位于终端中的目标计算框架执行,即可以通过终端中的目标计算框架自动完成目标计算作业的开发。

其中,在步骤S102之前,上述实施例还用于执行以下步骤:获取目标程序的配置文件。

在之前,如图2所示,可以接收用户在配置界面上为所述目标计算作业配置的配置信息,其中,所述配置信息包括对所述作业信息,所述计算引擎、所述数据源插件以及所述计算节点插件的参数进行配置得到的信息;所述作业信息包括以下至少之一:所述目标计算作业的作业名称、目标计算队列、所述计算引擎的标识、日志等级;所述计算引擎的参数包括以下至少之一:计算资源、环境参数;所述数据源插件的参数包括以下至少之一:至少一个数据源插件的标识,以及所述至少一个数据源插件中的每个数据源插件的参数;所述计算节点插件的参数包括:至少一个目标计算节点插件,以及所述至少一个目标计算节点插件中的每个目标计算节点插件的环境参数。

作为一种可选的实施方式,目标计算队列可以是目标资源管理器中的一个资源队列;日志等级为在所述目标程序运行的过程中生成的执行日志对应的等级;计算资源包括但不限于用于运行所述目标程序所需的计算资源的资源类型和资源大小,例如CPU、内存等的大小;计算引擎的环境参数为用于运行所述计算引擎所需的环境参数;每个数据源插件的参数包括但不限于数据源地址、数据源账户等参数;每个目标计算节点插件的环境参数包括但不限于依赖的注册表标识和结果表标识。

在上述实施例中,在接收用户在配置界面上为所述目标计算作业配置的配置信息之后,可以根据该配置信息生成配置文件,该配置文件包括但不限于json格式的配置文件。

其中,所述配置文件还用于指示所述计算引擎向所述目标资源管理器申请的计算资源,以及还用于指示使用所述计算资源执行所述目标计算作业。

需要说明的是,在上述实施例中,配置信息还用于指示目标程序的运行模式为集群式,从而在将目标计算作业提交到目标资源管理器后,可以利用目标资源管理器中的集群运行目标程序。

其中,在运行所述提交脚本以将所述目标计算作业提交到目标资源管理系统之后,上述实施例还用于执行以下步骤:对所述计算引擎进行初始化,并根据所述配置文件完成对所述计算引擎的参数的配置。

在上述实施例中,所述通过所述计算引擎执行实例化后的数据源插件以从数据源获取源数据,包括:在所述配置文件指示为所述目标计算作业配置了多个数据源插件的情况下,通过所述计算引擎依次执行实例化后的所述多个数据源插件中的每个数据源插件,其中,所述每个数据源插件用于从对应的一个数据源中获取数据;在通过所述计算引擎依次执行实例化后的所述多个数据源插件中的每个数据源插件的过程中,将从每个数据源获取到的数据注册为对应的一个临时表。

图3为根据本发明实施例配置数据源插件的示意图。其中,以结果表标识为结果表表名为例,对于数据源插件“读取Mysql”:其用于读取数据源“Mysql”中的数据,并将读取的数据写入到结果表标识对应的数据表“table_a”中。

需要说明的是,在配置文件还用于指示将临时表进行缓存的情况下,上述实施例中,还对每个数据源插件对应的临时表进行缓存。

其中,在所述计算节点插件包括多个目标计算节点插件的情况下,所述配置文件还用于指示所述多个目标计算节点插件中的每个目标计算节点插件所依赖的临时表标识和结果表标识。如图2所示,可以在对各个目标计算节点配置时,输入每个目标计算节点所依赖的临时表标识和结果表标识。

以结果表标识为结果表表名、依赖的临时表标识为临时表标识为例,图4为根据本发明实施例配置目标计算节点插件的示意图。如图4所示,每个目标计算节点与一个目标计算节点插件对应,以“解析Json”插件为例,该插件用于读取“table_b”数据表中的数据并计算,以及将得到的计算结果写入到“table_c”数据表中;其中,“Sql插件*”中的sql表达式为:select a.id,c.name,a.value from table_a a join table_c c on a.id=c.id。

图5为根据本发明实施例的程序开发方法形成的数据流程示意图。其中,根据图3中配置的数据源插件和图4中配置的目标计算节点插件可以形成如图5所示的数据流程有线无环图(DAG)。

基于上述实施例,所述通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算,包括:重复执行以下操作,直至当前计算节点插件为所述多个目标计算节点插件中的最后一个目标计算节点插件,其中,所述当前计算节点插件被初始化为所述多个目标计算节点插件中的第一个目标计算节点插件:根据所述当前目标计算节点插件所依赖的临时表标识,确定并加载所述当前目标计算节点插件的输入数据;通过所述计算引擎执行所述当前目标计算节点插件对所述输入数据进行计算,并将输出的计算结果注册为所述当前目标计算节点插件的结果表标识所标识的临时表。

如图6所示,当配置文件中包括对多个目标计算节点插件(作为示例,如图6中示出了n个目标计算节点插件,n为自然数)的配置时,通过计算引擎依次执行目标计算节点插件1、目标计算节点插件2、……直至计算节点插件n,从而完成目标计算作业。

需要说明的是,在上述实施例中,根据所述当前目标计算节点所依赖的临时表标识,确定并加载所述当前目标计算节点插件的输入数据,包括:在所述当前目标计算节点插件所依赖的临时表标识不为空的情况下,将所述当前目标计算节点插件所依赖的临时表标识所标识的数据表中的数据确定为所述当前目标计算节点插件的输入数据;在所述当前目标计算节点插件所依赖的临时表标识为空、且所述当前目标节点插件不为所述多个目标计算节点插件中的第一个插件的情况下,将所述多个目标计算节点插件中所述当前目标节点插件的前一个目标计算节点插件输出的计算结果确定为所述当前目标计算节点插件的输入数据;在所述当前目标计算节点插件所依赖的临时表标识为空、且所述当前目标节点插件为所述多个目标计算节点插件中的第一个插件的情况下,将所述计算引擎从至少一个数据源中的最后一个数据源获取到的源数据确定为所述当前目标计算节点插件的输入数据,其中,所述配置文件还用于指示至少一个所述数据源插件的配置,至少一个所述数据源插件中的每个数据源插件用于从所述至少一个数据源中的一个数据源中获取数据。

以下结合一示例,对上述实施例中的程序开发方法进行解释说明,但不用于限定本发明实施例的技术方案。

在一个可选实施例中,提供了一种程序开发方法,如图7所示,该方法包括以下步骤:

步骤S702,在配置界面对计算作业进行配置;

其中,通过在配置界面中进行简单的配置工作,包括:填写作业基础信息(即上述实施例中的作业信息,包括但不限于作业名称、计算队列(即上述实施例中的目标计算队列)、计算引擎、日志等级)、配置计算引擎(包括但不限于对计算资源、特定环境参数等进行配置)、配置数据源插件(包括但不限于选定一个或多个数据源插件并完成对应参数配置)、配置计算节点插件(包括但不限于选定一个或多个目标计算节点插件并完成对应参数配置);

将通过配置界面得到的配置信息进行保存后生成对应的Json文件(即上述实施例中的配置文件)。

步骤S704,生成作业脚本;

解析Json文件,根据Json文件中对计算引擎的配置生成实时计算作业的提交脚本,运行实时计算作业的提交脚本,将目标计算作业提交至目标资源管理系统(即上述实施例中的目标资源管理器,包括但不限于大数据集群资源管理系统Yarn);

根据Json文件完成计算引擎的初始化,动态加载计算引擎,并将Json文件分布式分发至计算引擎;以及同时利用反射机制动态加载数据源插件、计算节点插件,进行各插件的实例化及解析Json文件中对于各插件的参数配置。

其中,在加载插件时,仅加载用户所需插件对应的Jar包,从而减小了目标计算作业对资源的占用。

需要说明的是,若某一插件中需要与大数据集群组件进行交互,则需在目标程序运行前对涉及到的集群配置信息及权限信息进行外部接口访问,获取相关配置或下载相关文件,并进一步修改实时计算作业的提交脚本。

步骤S706,作业运行;

其中,在目标程序的运行模式为集群式(cluster),在获取到Yarn中足够的计算资源后,目标计算作业开始在Yarn中的大数据集群中运行。

目标计算作业的具体计算步骤如下:

步骤1、根据数据源插件的配置,执行加载数据源动作,并将从数据源获取到的数据注册为临时表;可选地,在Json文件指示对临时表进行缓存的情况下,可将该临时表进行缓存;

然后加载下一个数据源,直至数据源加载完毕;

步骤2、根据目标计算节点插件的配置,运行各个具体的节点作业。其中,目标计算节点插件的输入采用以下原则:当依赖的临时表表名不为空时,根据依赖的临时表表名的取值查找相关临时表并自动加载作为输入;当依赖的临时表表名为空时,采用上一个目标计算节点插件的输出作为输入;当不存在上一个目标计算节点插件时,采用在步骤1中从最后一个数据源读取的数据作为输入。

其中,对于特殊插件(包括但不限于:Sql插件),按照Sql插件中的sql表达式中存在的表名进行自动加载并进行数据运算。

目标计算节点插件计算完毕得到的计算结果同样可以注册为临时表,以及可以根据用户的配置,将该临时表进行缓存。

当前目标计算节点插件运行完成后,运行下一个目标计算节点插件,直至所有目标计算节点插件均加载完毕。

步骤3、对于待处理的每批数据或每条数据,重复执行上述步骤1和步骤2。

作为一种可选的实施方式,可以预先建立目标数据计算框架,其中,基础接口设计中的插件定义接口、数据源插件定义接口、目标计算节点插件定义接口、计算引擎定义接口以及计算引擎执行接口分别通过以下代码进行定义:

(1)插件定义接口

public interface Plugin extends Serializable{

//获取配置参数

PluginConfig getPluginConfig();

//设置配置参数

void setPluginConfig(PluginConfig pluginConfig);

}

(2)数据源插件定义接口

public interface BaseSourceextends Plugin{

//修改作业提交脚本

void buildCommand(JobContent jobContent,BC command);

//数据源获取数据

Data getData(BE env);

}

(3)执行节点插件定义接口

public interface BaseTaskextends Plugin{

//修改作业提交脚本

void buildCommand(JobContent jobContent,BC command);

//执行节点处理数据

Data process(Data data,BE env):Data

}

(4)计算引擎定义接口

public interface BaseEnvironment extends Plugin{

//计算引擎初始化

void init();

}

(5)计算引擎执行器接口

public interface BaseExecution{

//运行作业

void runJob(BE env,Listsources,Listtasks);

//生成作业提交脚本

BC buildCommand(JobContent jobContent,BE env,Listsources,Listtasks);

}

需要说明的是,在上述实施例中,实时计算作业的开发人员只需在前端的配置界面中填写作业的基本信息及计算引擎,然后选定并配置数据源插件及目标计算节点插件,即可以插件自动实例化加载的方式完成实时计算作业的开发并能够快速部署到生产环境,扩展性强从而实现了在不需要编写大量代码的基础上完成实时计算作业的快速开发和提交,同时也可以实现配置文件及项目代码的统一,大大降低了项目运维难度、实时程序的开发门槛,从而可以在有限的人力成本下快读的提供稳定且高效的数据处理服务;其中,基于上述实施例中的实时计算框架,对于数据源的获取及后续数据的处理,均采用插件化的方式开发,即后台组件均采用插件化实现,通过采用同一套顶级接口设计,遵循同样的设计模式,降低了插件的优化及扩展的难度;同时可以支持用户自定义插件,由用户上传符合规范的Jar包,并通过实时计算框架自动加载Jar包以及根据配置文件实例化用户自定义插件。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,执行拖拽编辑操作时,对各种内容格式的圈中,编辑内容时对各种内容的识别和打开对应的编辑工具,圈中内容的选中以及拖拽不限于右键双击等操作。本发明的保护范围应以权利要求的保护范围为准。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

根据本发明的另一个实施例,提供了一种程序开发装置,该程序开发装置应用于终端,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图8为根据本发明实施例的程序开发装置的结构框图,该装置包括:

解析模块82,用于根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件,并生成所述目标计算作业的提交脚本;其中,所述配置文件还用于指示对所述目标计算作业的作业信息、所述计算引擎、所述数据源插件以及所述计算节点插件的配置;

提交模块84,用于运行所述提交脚本以将所述目标计算作业提交到目标资源管理系统;

执行模块86,用于根据所述配置文件对所述数据源插件和所述计算节点插件进行加载并实例化,通过所述计算引擎执行实例化后的数据源插件以从数据源获取数据,并通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算。

通过本发明,根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件,并生成所述目标计算作业的提交脚本;其中,所述配置文件还用于指示对所述目标计算作业的作业信息、所述计算引擎、所述数据源插件以及所述计算节点插件的配置;运行所述提交脚本以将所述目标计算作业提交到目标资源管理系统;根据所述配置文件对所述数据源插件和所述计算节点插件进行加载并实例化,通过所述计算引擎执行实例化后的数据源插件以从数据源获取数据,并通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算。由于可以通过配置计算引擎、数据源插件以及计算节点插件,从而可以以插件自动实例化加载的方式实现用于执行计算作业的程序的开发,因此,解决了相关技术中程序的开发效率较低的技术问题,提高了程序的开发效率,并且降低了计算作业的项目代码的维护和管理难度。

其中,如图9所示,所述装置还包括建立模块92和获取模块94。其中,建立模块92,用于在根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件之前,建立目标计算框架,其中,所述目标计算框架包括多个数据源插件以及多个计算节点插件,所述多个数据源插件中的每个数据源插件用于从对应的一个数据源获取数据,所述多个计算节点插件中的每个计算节点插件用于执行数据计算。获取模块94,用于获取所述配置文件。

可选地,所述配置文件还用于指示所述计算引擎向所述目标资源管理器申请的计算资源,以及使用所述计算资源执行所述目标计算作业。

其中,所述装置还包括初始化模块,用于对所述计算引擎进行初始化,并根据所述配置文件完成对所述计算引擎的参数的配置。

在上述实施例中,所述执行模块86,还用于:在所述配置文件指示为所述目标计算作业配置了多个数据源插件的情况下,通过所述计算引擎依次执行实例化后的所述多个数据源插件中的每个数据源插件,其中,所述每个数据源插件用于从对应的一个数据源中获取数据;在通过所述计算引擎依次执行实例化后的所述多个数据源插件中的每个数据源插件的过程中,将从每个数据源获取到的数据注册为对应的一个临时表。

其中,在所述计算节点插件包括多个目标计算节点插件的情况下,所述配置文件还用于指示所述多个目标计算节点插件中的每个目标计算节点插件所依赖的临时表标识和结果表标识。

需要说明的是,所述执行模块86,还用于:重复执行以下操作,直至当前计算节点插件为所述多个目标计算节点插件中的最后一个目标计算节点插件,其中,所述当前计算节点插件被初始化为所述多个目标计算节点插件中的第一个目标计算节点插件:根据所述当前目标计算节点插件所依赖的临时表标识,确定并加载所述当前目标计算节点插件的输入数据;通过所述计算引擎执行所述当前目标计算节点插件对所述输入数据进行计算,并将输出的计算结果注册为所述当前目标计算节点插件的结果表标识所标识的临时表。

基于上述实施例,所述执行模块86,还用于:在所述当前目标计算节点插件所依赖的临时表标识不为空的情况下,将所述当前目标计算节点插件所依赖的临时表标识所标识的数据表中的数据确定为所述当前目标计算节点插件的输入数据;在所述当前目标计算节点插件所依赖的临时表标识为空、且所述当前目标节点插件不为所述多个目标计算节点插件中的第一个插件的情况下,将所述多个目标计算节点插件中所述当前目标节点插件的前一个目标计算节点插件输出的计算结果确定为所述当前目标计算节点插件的输入数据;在所述当前目标计算节点插件所依赖的临时表标识为空、且所述当前目标节点插件为所述多个目标计算节点插件中的第一个插件的情况下,将所述计算引擎从至少一个数据源中的最后一个数据源获取到的源数据确定为所述当前目标计算节点插件的输入数据,其中,所述配置文件还用于指示至少一个所述数据源插件的配置,至少一个所述数据源插件中的每个数据源插件用于从所述至少一个数据源中的一个数据源中获取数据。

本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

S1,根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件,并生成所述目标计算作业的提交脚本;其中,所述配置文件还用于指示对所述目标计算作业的作业信息、所述计算引擎、所述数据源插件以及所述计算节点插件的配置;

S2,运行所述提交脚本以将所述目标计算作业提交到目标资源管理系统;

S3,根据所述配置文件对所述数据源插件和所述计算节点插件进行加载并实例化,通过所述计算引擎执行实例化后的数据源插件以从数据源获取数据,并通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输装置以及输入输出设备,其中,该传输装置和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

S1,根据已获取的目标计算作业的配置文件,解析所述配置文件中指示的计算引擎、数据源插件和计算节点插件,并生成所述目标计算作业的提交脚本;其中,所述配置文件还用于指示对所述目标计算作业的作业信息、所述计算引擎、所述数据源插件以及所述计算节点插件的配置;

S2,运行所述提交脚本以将所述目标计算作业提交到目标资源管理系统;

S3,根据所述配置文件对所述数据源插件和所述计算节点插件进行加载并实例化,通过所述计算引擎执行实例化后的数据源插件以从数据源获取数据,并通过所述计算引擎执行实例化后的计算节点插件以对所述数据进行计算。

图10为根据本发明实施例的一种可选的电子装置的结构示意图。可选地,本领域普通技术人员可以理解,图10所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图10中所示更多或者更少的组件(如网络接口等),或者具有与图10所示不同的配置。

其中,存储器1002可用于存储软件程序以及模块,如本发明实施例中的程序开发方法和程序开发装置对应的程序指令/模块,处理器1004通过运行存储在存储器1002内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据同步方法。存储器1002可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1002可进一步包括相对于处理器1004远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。作为一种示例,上述存储器1002中可以但不限于包括上述程序开发装置的解析模块82,提交模块84和执行模块86。此外,还可以包括但不限于上述程序开发装置中的其他模块单元,本示例中不再赘述。

可选地,上述的传输装置1006用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1006包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1006为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。

此外,上述电子设备还包括:显示器1008,用于显示画面;和连接总线1010,用于连接上述电子装置中的各个模块部件。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 程序开发方法和装置、存储介质及电子装置
  • 应用程序开发方法、装置、设备和存储介质
技术分类

06120112568791