CN115599356A - 一种数据处理方法、装置及相关设备 - Google Patents
一种数据处理方法、装置及相关设备 Download PDFInfo
- Publication number
- CN115599356A CN115599356A CN202110785674.7A CN202110785674A CN115599356A CN 115599356 A CN115599356 A CN 115599356A CN 202110785674 A CN202110785674 A CN 202110785674A CN 115599356 A CN115599356 A CN 115599356A
- Authority
- CN
- China
- Prior art keywords
- operator
- target
- original
- data
- candidate
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种数据处理方法,具体的,数据处理装置获取用户定义的基于第一编程语言的原始算子,并根据该原始算子,确定基于第二编程语言的目标算子,该第二编程语言为数据处理装置所在的部署环境支持的编程语言,该目标算子的数据处理功能与原始算子的数据处理功能相匹配。然后,数据处理装置确定至少包括目标算子的目标执行计划,并根据该目标执行计划对原始数据进行处理,得到该原始数据对应的处理结果。如此,数据处理装置能够将用户基于任意编程语言自定义的原始算子转译成部署环境所能支持的编程语言的目标算子,从而可以降低用户的学习与使用成本、提高用户体验。此外,本申请还提供了相应的数据处理装置及相关设备。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理方法、装置及相关设备。
背景技术
云计算、物联网、人工智能等数字信息技术,在发展过程中积累了大量的原始数据。通常情况下,这些原始数据的质量可能处于较低的水平。比如,这些原始数据可能来自不同的数据源、具有不同的表现形式、存在数据错误、数据重复等。因此,用户(如数据科学家、数据使用者等)在进行数据分析、数据应用之前,可以先对原始数据执行数据准备(datapreparation),以提高数据质量。
目前,用户在对原始数据进行数据准备处理时,可以从自助的数据准备工具提供的多个算子(operator)中选择用于处理该原始数据的算子,并通过在数据准备工具上运行用户所选择的算子来提高原始数据的质量。但是,这种处理原始数据的方式可能要求用户执行繁琐的查找与点选操作,对于部分用户(如具有一定编程能力的用户等)而言并不友好,增加了用户的学习与使用成本,降低了用户体验。
发明内容
本申请提供了一种数据处理方法,用于支持用户自定义算子,从而提高用户处理原始数据的用户体验。此外,本申请还提供了一种数据处理装置、计算机设备、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种数据处理方法,该方法应用于数据处理装置,具体实现时,数据处理装置获取用户定义的基于第一编程语言的原始算子,实现该原始算子的第一编程语言可能难以被数据处理装置所在的部署环境所支持,因此,数据处理装置根据基于第一编程语言的算子,确定基于第二编程语言的目标算子,该第二编程语言为数据处理装置所在的部署环境支持的编程语言,该目标算子的数据处理功能与原始算子的数据处理功能相匹配。然后,数据处理装置确定至少包括目标算子的目标执行计划,并根据该目标执行计划对原始数据进行处理,得到该原始数据对应的处理结果。通常情况下,经过处理后的原始算子的数据质量可以高于原始数据的数据质量,从而后续可以根据数据质量更高的原始数据进行相应处理。
由于在处理原始数据的过程中,数据处理装置能够将用户自定义的原始算子转译成部署环境所能支持的编程语言的目标算子,这对于具有一定编程能力的部分用户而言,通过简单、便捷的自定义过程即能设定用于处理原始数据的算子,而无需针对用户所需的特定算子执行繁琐的查找与点选操作,从而可以降低用户的学习与使用成本、提高用户体验。并且,针对于任意编程语言的原始算子,数据处理装置均可以将其转译为部署环境所能支持的编程语言的目标算子,从而可以摆脱用户自定义算子时所采用的编程语言的限制,提高用户自定义算子的灵活性与普适性。
可选地,上述目标算子的数据处理功能与原始算子的数据处理功能相匹配,例如可以是目标算子的数据处理功能与原始算子的数据处理功能相同,或者可以是目标算子的数据处理功能与原始算子的数据处理功能之间的差异不超过预设范围。
在一种可能的实施方式中,数据处理装置在根据原始算子确定基于第二编程语言的目标算子时,具体可以是根据原始算子的功能标识,从算子库中查找出功能标识与原始算子的功能标识相匹配的目标算子,其中,该算子库中包括多个基于第二编程语言的算子,并且,该多个基于第二编程语言的算子中包括上述目标算子。如此,数据处理装置可以利用算子库中与原始算子的功能相匹配(也即功能标识相匹配)的目标算子来实现对原始数据的处理,以此可以实现支持用户对于算子的自定义。
示例性地,原始算子的功能标识与目标算子的功能标识相匹配,例如可以是两个功能标识相同;或者,原始算子的功能标识包括目标算子的功能标识;或者,目标算子的功能标识包括原始算子的功能标识;或者目标算子的功能标识的语义与原始算子的功能标识的语义相同或相似。
在一种可能的实施方式中,数据处理装置在根据原始算子确定基于第二编程语言的目标算子时,具体可以是获取原始算子对应的针对子数据的数据处理结果,该子数据为原始数据中的部分数据,然后,数据处理装置根据该数据处理结果以及子数据,为原始算子从算子库中搜索出至少一个候选算子,每个候选算子针对子数据的数据处理结果与原始算子对应的针对子数据的数据处理结果匹配,并且该算子库中包括多个基于第二编程语言的算子,从而数据处理装置可以从该至少一个候选算子中确定出目标算子。如此,数据处理装置可以通过算子库中的各个算子对于子数据的数据处理结果,确定与原始算子具有相同数据处理功能的目标算子,从而可以利用具有相同数据处理功能的目标算子处理原始数据,以此可以实现支持用户对于算子的自定义。
示例性地,候选算子针对子数据的数据处理结果与原始算子对应的针对子数据的数据处理结果匹配,可以是数据处理结果相同,或者可以是两个数据处理结果之间的差异不超过预设范围,如两个数据处理结果之间的差异比例不超过预设比例阈值等。
在一种可能的实施方式中,当确定出的候选算子的数量为多个时,数据处理装置从多个候选算子中确定出目标算子时,具体可以是确定该至少一个候选算子中每个候选算子处理子数据的代价,该代价例如可以是候选算子处理子数据的时长、资源消耗等,从而数据处理装置可以将处理子数据的代价最小的候选算子作为目标算子。如此,数据处理装置在利用该目标算子处理原始数据时,能够使得处理原始数据的代价相对较低。
在一种可能的实施方式中,数据处理装置在根据原始算子确定基于第二编程语言的目标算子时,具体可以是根据原始算子,利用预先完成训练的预测模型预测得到与原始算子的功能相匹配的算子标识,从而根据该算子标识从算子库中查找算子标识对应的目标算子,该算子库包括多个基于第二编程语言的算子。如此,数据处理装置可以利用预测模型来确定出与用户自定义的算子具有相同功能的目标算子,从而可以利用具有相同数据处理功能的目标算子处理原始数据,以此可以实现支持用户对于算子的自定义。
示例性地,原始算子的功能与目标算子的功能相匹配,例如可以是原始算子的功能与目标算子的功能相同,或者可以是目标算子的功能与原始算子的功能相同的置信度(或者称之为相似度)不低于预设阈值。
在一种可能的实施方式中,数据处理装置在利用预测模型预测得到目标算子的过程中,可以先对原始算子进行解析,得到该原始算子对应的抽象语法树,再将该抽象语法树输入至预测模型,得到该预测模型输出的与原始算子的抽象语法树相匹配的算子标识。通常情况下,原始算子与目标算子的抽象语法树相匹配时,该原始算子与目标算子的功能也匹配。
可选地,数据处理装置在将原始算子对应的抽象语法树输入至预测模型的过程中,可以先对该抽象语法树进行向量化,然后再将向量化的抽象语法树输入至预测模型。
在一种可能的实施方式中,数据处理装置在确定目标执行计划时,可以根据基于第二编程语言的多个算子生成初始计划执行,该多个算子中包括目标算子,然后,数据处理装置根据目标优化规则对初始执行计划执行优化操作,得到目标执行计划,该优化操作包括算子合并、算子去重、算子去冗余、算子执行顺序优化以及用户指定操作中的任意一种或多种。如此,数据处理装置后续根据经过优化后的目标执行计划处理原始数据时,可以使得针对原始数据的处理效率更高和/或消耗资源更少。
在一种可能的实施方式中,当针对初始执行计划的优化操作包括算子执行顺序时,数据处理装置在基于初始执行计划得到目标执行计划的过程中,可以先根据初始计划中的多个算子生成多种候选执行计划,其中,每种候选执行计划中定义了多个算子处理子数据的执行顺序,并且,不同候选执行计划中的多个算子的执行顺序不同,所处理的子数据为原始数据中的部分数据。然后,根据多种候选执行计划对应的处理子数据的代价,将处理子数据的代价最小的候选执行计划确定为目标执行计划。如此,数据处理装置在根据所确定的目标执行计划对原始数据进行处理时,能够使得处理原始数据所需的代价处于较低水平。
在一种可能的实施方式中,当优化操作包括用户指定操作时,数据处理装置还可以呈现优化规则定义界面,并根据用户在该优化规则定义界面上针对优化规则所执行的定义操作,生成目标优化规则。如此,数据处理装置可以支持用户对于执行计划的优化规则的自定义,从而可以提高用户对于优化执行计划的灵活度,提高用户体验。
在一种可能的实施方式中,数据处理装置还可以呈现算子选择界面,该算子选择界面呈现有多个候选算子的标识,并且该多个候选算子基于第二编程语言实现,这样,数据处理装置可以根据用户在该算子选择界面上执行的选择操作,从多个候选算子中确定该选择操作对应的目标候选算子,从而数据处理装置在确定目标执行计划时,可以根据该目标候选算子以及目标算子生成目标执行计划。如此,数据处理装置不仅可以支持用户自定义算则,还支持用户对已有的算子进行选择,从而可以进一步提高用户选择处理原始数据的算子的灵活度,提高用户体验。
第二方面,本申请提供一种数据处理装置,该数据处理装置包括:通信模块,用于获取用户定义的基于第一编程语言的原始算子;确定模块,用于根据原始算子,确定基于第二编程语言的目标算子,第二编程语言为数据处理装置所在的部署环境支持的编程语言,目标算子的数据处理功能与原始算子的数据处理功能相匹配;并确定目标执行计划,目标执行计划至少包括目标算子;计划执行模块,用于根据目标执行计划对原始数据进行处理,得到原始数据对应的处理结果。
在一种可能的实施方式中,确定模块,具体用于根据原始算子的功能标识,从算子库中查找出功能标识与原始算子的功能标识相匹配的目标算子,算子库中包括多个基于第二编程语言的算子,多个基于第二编程语言的算子中包括目标算子。
在一种可能的实施方式中,确定模块,具体用于:获取原始算子对应的针对子数据的数据处理结果,子数据为原始数据中的部分数据;根据数据处理结果、子数据,为原始算子从算子库中搜索出至少一个候选算子,每个候选算子针对子数据的数据处理结果与原始算子对应的针对子数据的数据处理结果匹配,算子库包括多个基于第二编程语言的算子;从至少一个候选算子中确定目标算子。
在一种可能的实施方式中,确定模块,具体用于:确定至少一个候选算子中每个候选算子处理子数据的代价;将处理子数据的代价最小的候选算子作为目标算子。
在一种可能的实施方式中,确定模块,具体用于:根据原始算子,利用预先完成训练的预测模型预测得到与原始算子的功能相匹配的算子标识;根据算子标识从算子库中查找算子标识对应的目标算子,算子库包括多个基于第二编程语言的算子。
在一种可能的实施方式中,确定模块,具体用于:对原始算子进行解析,得到原始算子对应的抽象语法树;将抽象语法树输入至预测模型,得到预测模型输出的与原始算子的抽象语法树相匹配的算子标识。
在一种可能的实施方式中,确定模块,具体用于:根据基于第二编程语言的多个算子生成初始执行计划,多个算子中包括目标算子;根据目标优化规则对初始执行计划执行优化操作,得到目标执行计划,优化操作包括算子合并、算子去重、算子去冗余、算子执行顺序优化以及用户指定操作中的任意一种或多种。
在一种可能的实施方式中,当优化操作包括算子执行顺序优化时,确定模块,具体用于:根据初始执行计划中的多个算子生成多种候选执行计划,每种候选执行计划中定义了多个算子处理子数据的执行顺序,不同候选执行计划中的多个算子的执行顺序不同,子数据为原始数据中的部分数据;根据多种候选执行计划对应的处理子数据的代价,将处理子数据的代价最小的候选执行计划确定为目标执行计划。
在一种可能的实施方式中,当优化操作包括用户指定操作时,装置还包括:呈现模块,用于呈现优化规则定义界面;根据用户在优化规则定义界面上针对优化规则所执行的定义操作,生成目标优化规则。
在一种可能的实施方式中,装置还包括:呈现模块,用于呈现算子选择界面,算子选择界面呈现有多个候选算子的标识,多个候选算子基于第二编程语言实现;根据用户在算子选择界面上执行的选择操作,从多个候选算子中确定选择操作对应的目标候选算子;确定模块,具体用于根据目标候选算子以及目标算子,生成目标执行计划。
第三方面,本申请提供一种计算机设备,所述计算机设备包括处理器和存储器;该存储器用于存储指令,当该计算机设备运行时,该处理器执行该存储器存储的该指令,以使该计算机设备执行上述第一方面或第一方面的任一种实现方式所述的数据处理方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。计算机设备还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机设备上运行时,使得计算机设备执行上述第一方面或第一方面的任一种实现方式所述的方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得计算机设备执行上述第一方面或第一方面的任一种实现方式所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其它的附图。
图1为一种示例性应用场景示意图;
图2为本申请实施例提供的一种数据处理装置200的结构示意图;
图3为本申请实施例提供的一种数据处理方法的流程示意图;
图4为本申请实施例提供的算子自定义界面示意图;
图5为解析排序算子的程序代码得到抽象语法树的示意图;
图6为本申请实施例提供的预测模型的结构示意图;
图7为本申请实施例提供的算子选择界面示意图;
图8为本申请实施例提供的优化规则定义界面的示意图;
图9为本申请实施例提供的一种计算机设备900的结构示意图。
具体实施方式
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解,这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。
参见图1,为一种示例性地应用场景示意图。如图1所示,用户100(如数据科学家、数据分析师或者数据使用者等)可以通过数据处理装置200对数据源300中的原始数据进行处理,以提高原始数据的质量。其中,数据源300可以包括一种或者多种数据源,图1中以包括数据源1以及数据源2为例,实际应用时,数据源300中的原始数据来源于更多的数据源。
由于数据源300中的原始数据来源于不同的数据源,并且原始数据中的不同数据可能具有不同的表现形式、存在数据错误、数据重复等问题,原始数据的质量通常较低,从而影响后续基于原始数据执行的数据分析、数据应用所得到的结果。为此,用户100可以从数据处理装置200提供的多个算子中选择用于处理该原始数据的算子,从而利用选择的算子依次对原始数据进行处理,以提高原始数据的质量,为后续的数据分析、数据应用进行数据准备。其中,算子具体可以是利用程序语言编写的、具有一定处理功能的函数,如过滤(filter)算子、排序(sort)算子、去重(duplicate removal)算子、分组(grouping)算子、增加(add)算子等。
但是,当数据处理装置200所提供的算子数量较多时,用户100从较多数量的算子中查找出特定的算子,可能需要执行较为繁琐的查找以及点选操作,从而不仅降低了对于原始数据的处理效率,而且,对于使用该数据处理装置200的新用户来说,学习成本较高,操作繁琐,这也影响了用户的使用体验。
实际应用时,通过程序语言编写算子的难度通常较低,比如,对于具有一定编程能力的用户100来说,通过简单的编写几行(或者更多行)程序代码即可定义出用户所需的算子,这相比于用户从多个算子中查找用户所需的算子的方式来说,可能更加简便、快捷。
基于此,本申请实施例提供了一种数据处理方法,以支持用户自定义算子,从而提高用户处理原始数据的用户体验。具体实现时,参阅图2,数据处理装置200可以包括通信模块201、确定模块202、计划执行模块203。其中,通信模块201获取用户100定义的基于第一编程语言的原始算子,并将该原始算子提供给确定模块202。确定模块202根据该原始算子,确定基于第二编程语言的目标算子,该目标算子的数据处理功能与原始算子的数据处理功能相匹配(如数据处理功能相同或者相似等),并且实现目标算子的第二编程语言为数据处理装置200所在的部署环境所支持的编程语言。然后,确定模块202基于目标算子确定包括目标算子的目标执行计划,并将该目标执行计划发送给计划执行模块203。计划执行模型203根据接收到的目标执行计划对原始数据进行处理,得到原始数据对应的处理结果,该处理结果中的数据质量通常可以高于原始数据的数据质量。
由于在处理原始数据的过程中,数据处理装置200能够将用户100自定义的原始算子转译成部署环境所能支持的编程语言的目标算子,这对于具有一定编程能力的部分用户100而言,通过简单、便捷的自定义过程即能设定用于处理原始数据的算子,而无需针对用户100所需的特定算子执行繁琐的查找与点选操作,从而可以降低用户100的学习与使用成本、提高用户体验。
并且,针对于任意编程语言的原始算子,数据处理装置200均可以将其转译为部署环境所能支持的编程语言的目标算子,从而可以摆脱用户100自定义算子时所采用的编程语言的限制,提高用户100自定义算子的灵活性与普适性。比如,用户A以及用户B擅长的编程语言不同,用户A擅长python语言,而用户B擅长java语言,而数据处理装置200均可以将用户A基于python定义的算子以及用户B定义的算子,转译成数据处理装置200所在的部署环境所能识别的结构化查询语言(structured query language,SQL)。当然,当数据处理装置200所在的部署环境所能识别的编程语言为python语言(或者java语言)时,数据处理装置200可以无需对用户A(或者用户B)定义的算子进行编程语言的转译。
实际应用时,数据处理装置200可以通过软件实现,例如可以是运行在设备上的计算机程序,如应用程序(application,APP)、插件(plugin)等。或者,数据处理装置200也可以通过硬件实现,如终端和/或服务器等;或者,数据处理装置200可以利用专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD),现场可编程门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合实现上述任意数据处理装置200的功能。本实施例中,对于数据处理装置200的具体实现形态并不进行限定。
值得注意的是,上述图2所述的数据处理装置200仅作为一种示例性说明,并不用于限定本申请实施例的技术方案局限于图2所示示例。比如,图2所示的数据处理装置200中,还可以集成更多的功能模块,如还可以集成呈现模块204,该呈现模块204可以用于呈现交互界面,以便于基于该交互界面与用户100进行交互,如呈现目标执行计划、原始数据对应的处理结果等。本实施例中,对于数据处理装置200具体实现并不进行限定。
为便于理解,下面结合附图,对本申请的实施例进行描述。
参见图3,图3为本申请实施例提供的一种数据处理方法的流程示意图。其中,图3所示的数据处理方法可以应用于图2所示的数据处理装置200中,或者应用于其它可适用的数据处理装置中。为便于说明,本实施例中以应用于图2所示的数据处理装置200为例进行示例性说明。
基于图2所示的数据处理装置200,图3所示的数据处理方法具体可以包括:
S301:通信模块201获取用户100定义的基于第一编程语言的原始算子。
本实施例中,数据处理装置200可以支持用户100对于处理原始数据的算子(以下称之为原始算子)进行自定义。作为一种实现示例,数据处理装置200中的呈现模块204可以向用户呈现算子自定义界面,如图4所示。用户100可以在算子自定义界面提供的代码编辑框中输入实现该算子的程序代码,并输入该程序代码所对应的第一编程语言,如python、java、SQL、R语言(the R programming language)中的任意一种编程语言,或者也可以是其它类型的编程语言。这样,当用户201在该算子自定义界面完成原始算子的自定义操作后,通信模块201可以获取用户自定义的原始算子。
而在又一种实现示例中,用户100可以通过用户终端或者数据处理装置200的本地接口,向数据处理装置200发送包含基于第一编程语言的原始算子的程序文件,从而通信模块201可以接收到用户100自定义的原始算子。本实施例中,对于通信模块201获取原始算子的具体实现方式并不进行限定。
S302:确定模块202根据通信模块201获取的原始算子,确定基于第二编程语言的目标算子,其中,该第二编程语言为数据处理装置200所在的部署环境所支持的编程语言,并且,所确定的目标算子的数据处理功能与用户100自定义的原始算子的数据处理功能相匹配。
实际应用场景中,用户100定义原始算子时所采用的编程语言可能与数据处理装置200所在的部署环境所支持的编程语言不同,这使得数据处理装置200可能难以识别用户自定义的原始算子。为此,对于用户100自定义的基于第一编程语言实现的原始算子,确定模块202可以将其转译成数据处理装置200所能识别的基于第二编程语言的算子(以下称之为目标算子)。其中,转译后的目标算子的数据处理功能与原始算子的数据处理功能相匹配,如两个数据处理功能相同或者相似度较高等。当然,若用户100自定义原始算子时所采用的编程语言能够被数据处理装置200,则确定模块202可以无需对原始算子进行编程语言的转译。可选地,数据处理装置200所在的部署环境可以由用户100进行选择,比如,当原始数据的数据量较大时,用户100可以将数据处理装置200部署于Spark等环境中,而当原始数据的数据量较小时,用户100可以在其它环境中部署数据处理装置200。当然,也可以是基于用户100的历史操作行为确定部署数据处理装置的环境中,本实施例对此并不进行限定。
示例性地,本实施例提供了以下几种将原始算子转译成目标算子的具体实现方式。
在第一种可能的实施方式中,数据处理装置200中可以预先配置有包括算子库,该算子库中包括多个基于第二编程语言实现的算子,不同算子用于实现不同的数据处理功能,并且算子所实现的功能可以通过相应的功能标识进行指示。这样,确定模块202在接收到用户自定义的原始算子后,可以根据该原始算子中的功能标识(该功能标识例如可以是原始算子对应的函数名),从算子库包括的多个算子中查找出功能标识与原始算子的功能标识相匹配的目标算子,从而得到能够被数据处理装置200识别的基于第二编程语言的目标算子。
其中,目标算子的功能标识与原始算子的功能标识相匹配,例如可以是目标算子的功能标识与原始算子的功能标识相同,如目标算子与原始算子具有相同的函数名(该函数名即为功能标识)等。或者,目标算子的功能标识与原始算子的功能标识相匹配,也可以是两个功能标识不完全相同,但是目标算子的功能标识包括原始算子的功能标识,或者原始算子的功能标识包括目标算子的功能标识时,也可以确定目标算子的功能标识与原始算子的功能标识相匹配。举例来说,假设目标算子的函数名为OperatorSort,而原始算子的函数名为Sort,即目标算子的函数名表达包括原始算子的函数名表达,从而可以确定目标算子的功能标识与原始算子的功能标识相匹配。而在其它可能的实施方式中,当目标算子的功能标识与原始算子的功能标识不同,但是两个功能标识具有相同或者相近的语义时,也可以是确定目标算子的功能标识与原始算子的功能标识相匹配。例如,假设目标算子的函数名为add,原始算子的函数名为multiply,则两个函数名在语义上相近,均是指对一列数据进行增值运算,从而可以确定目标算子的功能标识与原始算子的功能标识相匹配。
实际应用时,基于不同编程语言的功能标识可能存在较大差异。比如,当功能标识具体为算子的函数名时,基于python语言命名的函数名与基于SQL语言命名的函数名可能差异较大。因此,在进一步可能的实施方式中,算子库中的每个算子可以具有唯一标识。本实施例中,每个算子的标识,也可以被称之为数据准备特色语言(data preparationspecial language,DPSL)算子。并且,每个算子可以具有多种编程语言(包括第一编程语言)的程序代码,比如,对于filter算子,算子库中可以同时包括通过python、java、R以及SQL语言实现该filter算子的程序代码。由于每个算子所对应的多种编程语言的程序代码均是用于实现相同功能的算子,因此,各个算子对应的多种编程语言的程序代码可以映射相同的算子标识。同时,算子库中的每个算子还可以具有对应的基于第二编程语言实现的程序代码,此时,第二编程语言例如可以是除python、java、R以及SQL之外的其它语言,如C语言等。每个算子的上述多种编程语言(如python、java、R以及SQL等)可以与第二编程语言通过该算子的唯一性标识进行对应。这样,无论用户100采用python、java、R以及SQL中的哪种编程语言实现原始算子,确定模块202均可以根据该原始算子的对应的功能标识,从算子库中查找出具有该功能标识所指示的功能的算子,从而可以根据该算子的标识(如上述DPSL算子)确定基于第二编程语言实现的目标算子。
实际应用场景中,具有相同功能标识的算子可以是一个,或者可以是多个。当算子库中同时存在多个算子具有相同的功能时,该多个算子中的不同算子之间在实现方式或者性能等方面存在差异。若具有该功能的算子数量为一个,则确定模块202可以根据该算子的标识查找到相应的基于第二编程语言的程序代码,也即查找到基于第二编程语言实现的目标算子。而当具有该功能的算子数量为多个时,针对于每个算子,确定模块202可以根据实现该算子的多种编程语言中基于第一编程语言的程序代码,将该程序代码与用户自定义算子的程序代码进行比对,确定程序代码之间的差异,从而确定模块202可以根据各个算子基于第一编程语言实现的程序代码与用户自定义算子的程序代码之间的差异,从多个算子中确定出程序代码差异最小的算子,并根据该算子的标识查找到基于第二编程语言实现的目标算子。
在第二种可能的实施方式中,确定模块202可以通过启发式搜索的方式确定目标算子。具体实现时,确定模块202可以获取基于原始算子所对应的数据处理结果,该数据处理结果例如可以是由用户100提供的、基于原始算子的处理逻辑对子数据进行处理后所得到的数据处理结果。其中,子数据可以是所要处理的原始数据中的部分数据,如可以是通过随机抽样、等间隔抽样等方式从原始数据中抽取出部分数据(也即本实施例中所述的子数据),或者,子数据也可以是与原始数据无关的数据,如预先设置的测试数据等。
然后,确定模块202可以根据获取的数据处理结果以及该子数据,为原始算子从算子库中确定至少一个候选算子,该算子库中包括多个基于第二编程语言的算子,并且所确定的每个候选算子对于该子数据的数据处理结果与确定模块202获取的数据处理结果相匹配。其中,算子库中的算子,可以预先从开源的代码库(如github等)中进行收集,或者预先由技术人员完成开发等。作为一种确定候选算子的实现示例,针对算子库中包括的每个基于第二编程语言实现的算子,确定模块202可以利用该算子对子数据进行处理,得到该算子所对应的数据处理结果。然后,确定模块202可以将该算子对应的数据处理结果与原始算子对应的数据处理结果进行比较,得到两个数据处理结果之间的差异。若两个数据处理结果相同或者两个数据处理结果之间的差异程度处于预设范围(如两个数据处理结果之间的差异比例不超过预设比例阈值等),表征该算子针对子数据的数据处理结果与确定模块202获取的数据处理结果相匹配,则确定模块202可以将该算子确定为候选算子;而若两个数据处理结果之间的差异程度较大,表征该算子针对子数据的数据处理结果与确定模块202获取的数据处理结果不匹配,则确定模块202可以从算子库的其余算子中,选取一个新的算子并继续比较该算子对于子数据的数据处理结果与原始算子对应的数据处理结果之间的差异。以此类推,直至遍历完算子库中的所有算子。如此,可以通过比较数据处理结果从算子库中确定出至少一个候选算子。
在确定出候选算子后,确定模块202可以进一步从至少一个候选算子中确定出目标算子。示例性地,确定模块202可以确定每个候选算子处理子数据的代价,该代价例如可以是通过候选算子处理子数据所占用的存储资源、CPU资源、处理效率(处理时长)等信息进行衡量。然后,确定模块202可以根据各个算子处理子数据的代价,从中确定出代价最小的候选算子作为目标算子。如此,确定模块202在确定目标算子的过程中,可以摆脱原始算子的程序代码的实现形式与算子库中算子的程序代码的实现形式之间差异的限制,从而可以提高用户100自定义原始算子的自由度。
实际应用场景中,当算子库所包括的算子数量较多时,确定模块202对算子库中的算子进行遍历计算以确定目标算子的过程,可能耗时较长、所需的计算资源、存储资源等较大。为此,在进一步可能的实施方式中,算子库中的多个算子可以被预先划分为多个分组,如可以按照算子的功能进行分组等。这样,确定模块202在确定候选算子时,若分组中的部分算子针对子数据的数据处理结果与原始算子对应的数据处理结果之间的差异较大时,确定模块202可以无需再对该算子所在分组内的其余算子继续进行遍历计算,而可以直接对下一个分组中的算子进行遍历计算。如此,可以减少确定模块202所需遍历的算子数量,从而可以减少确定目标算子所需的资源消耗,提高确定目标算子的效率。
在第三种可能的实施方式中,确定模块202可以通过预先完成训练的预测模型确定目标算子。具体实现时,由于实现相同或相近功能的算子的程序代码之间通常具有一定的相似性,具体可以体现为程序代码的结构相似和/或程序代码的语义相似,相应的,这两个算子的程序代码所对应的抽象语法树(abstract syntax tree,AST)通常也相似。因此,确定模块202可以先对原始算子的程序代码进行解析,得到原始算子的抽象语法树,从而确定模块202可以将原始算子的抽象语法树输入至预先完成训练的预测模型中。如图5所示,针对图5上方所示的基于java编程语言实现的排序(sort)算子,其对应的抽象语法树如图5下方所示。实际应用时,确定模块202可以先将抽象语法树解析为向量表示形式,再将向量化表示的抽象语法树输入至预测模型中。示例性地,抽象语法树的向量化表示具体可以是[编程语言,功能标识,算子标识,[算子输入,输出],[AST解析输入,输出,执行路径],[AST解析输入,输出,执行路径]…]这种表现形式。其中,执行路径是指抽象语法树的输入至输出之间的路径。如此,可以将离散变量转为连续向量表示方式,从而减少离散变量的空间维数。然后,可以由该预测模型输出算子库中与该原始算子的功能相匹配的算子标识,从而确定模块202根据该算子标识可以从预先构建的算子库中查找出该算子标识所对应的基于第二编程语言的目标算子。
其中,原始算子与目标算子的功能相匹配,例如可以是原始算子的功能与目标算子的功能相同,或者,原始算子的功能与目标算子的功能相同的置信度(或相似度)不低于预设阈值。比如,当预测模型基于原始算子的抽象语法树,确定算子库中的一个算子的功能与原始算子的功能存在90%以上的相似度时,则预测模型可以输出该算子为目标算子,并同时输出该目标算子与原始算子相匹配的置信度为90%。算子库中可以包括多个基于第二编程语言的算子,示例性地,算子库中的多个算子例如可以是通过从开源的代码库中进行收集,或者预先由技术人员完成开发等。
为便于理解,下面对预测模型的构建以及训练过程进行详细介绍。应理解,构建以及训练预测模型的过程,可以由确定模块202执行,也可以是由其它模块(如模型训练模块等)或者单独配置的装置执行,本实施例对此并不进行限定。为便于描述,下面以确定模块202执行构建和训练预测模型为例进行示例性说明。
在构建预测模型时,由于实际应用场景中算子库中包括多种编程语言的算子数量较多,相应的,用于训练该预测模型的算子数量也会较多。因此,确定模块202可以采用门控循环单元(gated recurrent unit,GRU)+级联层+全连接层+归一化指数函数(softmax函数)的结构构建预测模型,如图6所示。其中,GRU层的作用是将算子对应的抽象语法树的向量化表示汇总为函数级向量,该GRU层的输入为算子对应的抽象语法树的向量化表示,输出为ht:
其中,zt为遗忘门(forget gate),ht-1为GRU层在上一时刻的输出,为重置门(reset gate)与GRU层在上一时刻的输出的乘积。实际应用时,在构建预测模型时,该预测模型中的GRU层也可以是被替换为长短期记忆(long short-term memory,LSTM)网络、循环神经网络(recurrent neural network,RNN)、自注意力(self-attention)网络等,本实施例对此并不进行限定。
级联层,用于确定GRU层输出的函数级向量所对应的多个池化特征,并将该多个池化特征对应的向量进行连接,形成票选特征(polling features)。
其中,tanh为双曲正切函数,W为全连接层对应的神经网络学习的权重
归一化指数函数,用于根据全连接层输出的输入算子对应的程序代码向量输出算子库中与该输入算子相匹配的算子标识(如函数标识等),并可以进一步输出这两个算子之间的匹配程度,如可以是通过匹配的置信度来衡量两个算子之间的匹配程度等。实际应用时,归一化指数函数还可以输出所匹配的算子对应的功能标识。
在对构建完成的预测模型进行训练时,确定模块202可以从开源代码库中获取用于算子,和/或,获取由技术人员预先通过编写程序代码的方式所开发的算子等。然后,确定模块202可以将这些算子分别划入训练集合以及测试集合中。例如,可以通过预设的排序算法或者过滤算法等,从多个算子中抽取部分算子作为用于训练预测模型的算子,并将其划入训练集合;将剩余部分算子作为用于测试预测模型的算子,并划入测试集合。实际应用时,可以将80%的算子用于对预测模型进行训练,将剩余的20%的算子用于对预测模型进行测试。在利用训练集合的算子对预测模型进行训练之前,确定模块202可以先将训练集合中的算子进行解析,得到该算子的抽象语法树,再进一步解析得到该抽象语法树所对应的向量化表示。由于在程序代码中多种代码实现均可以表达相同的含义,如程序代码中的“add”(求和)与“+”(相加求和)均可以用于指示计算两个数的和值,因此,在对抽象语法树进行向量化表示的过程中,确定模块202可以利用预先配置的语言词典,将抽象语法树中的术语进行对齐,如将术语“+”对齐为术语“add”等。然后,确定模块202可以将训练集合中的算子对应的向量化表示,该向量化表示例如可以是[编程语言,功能标识,算子标识,[算子输入,输出],[AST解析输入,输出,执行路径],[AST解析输入,输出,执行路径]…]。其中,该向量化表示中的[[算子输入,输出],[AST解析输入,输出,执行路径],[AST解析输入,输出,执行路径]…]]可以作为预测模型的输入,该向量化表示中的[功能标识,算子标识]作为模型训练过程中的标签(lable),预测模型的输出可以是[功能标识、算子标识、编程语言、置信度]。
在利用训练集合中的算子完成对于预测模型的训练后,可以利用测试集合中的算子对该预测模型进行测试,以确定预测模型的训练效果是否达到预期。示例性地,在利用测试集合中的算子对预测模型进行测试的过程中,可以根据以下四种评价指标对预测模型的测试结果进行统计,该评价指标包括真正例(true positive,TP)、假正例(falsepositive,FP)、假负例(false negative,FN)以及真负例(true negative,TN)。其中,真正例,是指预测模型输出的模型与输入的模型相匹配并且输出结果正确;真负例,是指预测模型输出的模型与输入的模型相匹配并且输出结果错误;假正例,是指预测模型输出的模型与输入的模型不匹配并且输出结果正确;假负例,是指预测模型输出的模型与输入的模型不匹配并且输出结果错误。然后,确定模块202可以根据这四个评价指标确定预测模型的训练效果是否达到预期。比如,确定模块202可以根据TP、FP计算出该预测模型的精确率(precision),如下述公式(3)所示,根据TP以及FN计算出预测模型的召回率(recall),如下述公式(4)所示。当预测模型的精确率以及召回率达到各自对应的阈值时,确定模块202可以确定该预测模型的训练过程结束;而如预测模型的精确率或召回率未达到预设阈值时,确定模块202可以确定继续对预测模型进行训练。
精确率=TP/(TP+FP) (3)
召回率=TP/(TP+FN) (4)
基于上述三种示例性实施方式,确定模块202可以将用户100自定义的原始算子转译成与该原始算子具有相同功能的目标算子,并且该目标算子是基于数据处理装置200所能识别的第二编程语言实现,因此,数据处理装置200还可以继续执行以下步骤,以基于该目标算子对原始数据进行处理。如此,数据处理装置200可以支持用户100自定义算子来处理原始数据,从而可以降低用户100设定算子的学习成本、提高用户体验。
S303:确定模块202确定目标执行计划,该目标执行计划至少包括目标算子。
通常情况下,确定模块202在转译得到目标算子后,可以基于该目标算子生成相应的目标执行计划。其中,目标执行计划可以包括多个用于处理原始数据的算子以及各个算子处理原始数据的执行顺序,该多个算子中包括基于用户100自定义的原始算子所转译得到的目标算子。
作为一种实现示例,目标执行计划中的多个算子,可以全部由确定模块202根据用户100自定义的多个原始算子分别进行转译得到。比如,用户100可以在数据处理装置200上自定义基于python语言实现的filter算子、join算子、sort算子、add算子,而确定模块202可以这些自定义算子分别转译成基于java语言实现的filter算子、join算子、sort算子、add算子,并设定这些算子的执行顺序为sort->add->filter->join,以此构成目标执行计划的数据处理逻辑为:先执行sort算子、再执行add算子、接着执行filter算子、最后执行join算子。
而在另一种实现示例中,目标执行计划中的多个算子,可以包括用户100在数据处理装置200上选择的算子以及用户100自定义的算子。具体的,呈现模块204可以向用户100呈现如图7所示的算子选择界面,该算子选择界面中的左侧可以呈现有多个基于第二编程语言实现的候选算子对应的标识(如算子的图标、名称等),从而用户100可以在该算子选择界面上选择用于处理原始数据的算子,例如用户100可以将左侧的算子拖动至右侧针对算子的编排区域中。相应的,确定模块202可以根据用户100在该算子选择界面上针对多个候选算子的选择操作,从多个候选算子中确定该选择操作对应的目标候选算子。同时,该算子选择界面上还可以设置有方便用户100自定义算子的触发控件,并且,当用户点选该触发控件后,呈现模块204可以呈现如图4所示的算子自定义界面,或者在算子选择界面上呈现自定义算子的编辑区域,如图7所示,以便用户100在该算子自定义界面或者算子选择界面的编辑区域中通过编写程序代码的方式定义原始算子。这样,确定模块202可以根据用户100在算子选择界面上所选择的目标候选算子以及根据对用户100自定义的原始算子进行转译所得到的目标算子,生成该目标执行计划。
进一步的,确定模块202在生成目标执行计划的过程中,确定模块202还可以执行自动优化过程。比如,确定模块202基于目标算子(以及用户100选择的其它算子)可以生成初始执行计划,然后,确定模块202可以根据预先获取的目标优化规则对该初始执行计划执行优化操作,得到执行效率更高或者执行代价更小的目标执行计划。具体的,本实施例提供了以下三种对初始执行计划中进行优化的实现示例。
在第一种示例中,确定模块202可以对初始执行计划中的部分算子进行合并和去重,以降低算子运行时间,提高算子的运行效率。以合并算子为例,假设初始执行计划中包括相同功能的算子1、算子2以及算子3。当算子1执行针对原始数据的处理后,确定模块202将该算子1针对原始数据的处理结果1进行缓存,然后,再由算子2对缓存的处理结果继续进行处理,并由确定模块202对算子2运行得到的处理结果2进行缓存后,继续交由算子3执行。如此,确定模块202对于原始数据的处理过程即为运行算子1->缓存处理结果1->运行算子2->缓存处理结果2->运行算子3。而当对算子1、算子2以及算子3进行合并后,假设得到合并算子1’,则确定模块202对于原始数据的处理过程即为运行算子1’->缓存处理结果1’,如此,可以降减少确定模块202缓存操作,降低算子的运行时间,提高算子运行效率。而对算子进行去重,即为将初始执行计划中与算子A具有相同功能并且处理相同数据的其它算子进行删除,该算子A为初始执行计划中的任意一个算子。
举例来说,确定模块202在针对基于SQL语言的算子进行合并时,例如可以包括合并子查询以及启发式查询重写。其中,合并子查询,是指当上一个查询算子所查询到的结果为下一个查询算子的查询范围时,将两个查询算子合并为一个查询算子。如,假设上一个查询算子具体为select A from Table S,下一个查询算子具体为select B from A,则可以将该这两个查询算子合并为select B from Table S。启发式查询重写,是指向具有相同查询范围的查询算子合并为一个算子。如假设上一个查询算子具体为select A from TableS,下一个查询算子具体为select B from Table S,则可以将该这两个查询算子合并为select A add B from Table S。又例如,当存在包括数据导入内容的算子时,可以优先执行该算子,从而后续算子可以将上一算子的输出作为下一算子的输入,以此对多个算子进行顺序合并。
在第二种示例中,确定模块202可以将初始执行计划解析成抽象语法树,从而可以利用预先配置的优化规则,对该抽象语法树中的执行逻辑进行优化。以对初始执行计划中的算子进行去冗余为例,假设抽象语法树中存在对原始数据中的同一列数据连续两次进行排序,在抽象语法树中,第二次排序的执行逻辑可以作为第一次排序的执行逻辑的子节点,从而在对该列数据进行排序时,可以仅执行子节点对应的逻辑即可(也即执行最后一次排序的处理逻辑)。又比如,当抽象语法树中存在针对多次数据过滤逻辑时,确定模块202可以基于所过滤的数据之间的包含关系,读多次数据过滤逻辑进行合并。再比如,当抽象语法树中存在数据裁剪的处理逻辑时,确定模块202可以将该数据裁剪的处理逻辑置前,以便在执行该抽象语法树对应的处理逻辑时,可以优先执行数据裁剪逻辑,从而可以减少后续算子在运行时所处理的数据量。
在第三种示例中,确定模块202可以初始执行计划中的多个算子生成多种候选执行计划,该多种候选执行计划中包括相同的算子,并且,每种候选执行计划定义了多个算子处理子数据的顺序,但是不同初始计划执行中多个算子处理子数据的执行顺序不同。比如,基于filter算子、join算子、sort算子、add算子,可以生成3个初始计划执行,其中,初始执行计划1中算子的执行顺序为sort->add->filter->join,初始执行计划2中算子的执行顺序为add->sort->filter->join,初始执行计划3中算子的执行顺序为filter->sort->add->join。针对与不同的候选执行计划,确定模块202可以分别计算每种候选执行计划在处理数据时所具有的代价,该代价例如可以是通过。示例性地,针对每种候选执行计划,确定模块202根据该候选执行计划中的算子执行顺序,对子数据进行处理,并统计根据该候选始执行计划处理子数据所具有的代价,以此得到各个候选执行计划在处理子数据时所具有的代价,该代价例如可以是根据处理子数据所占用的存储资源、CPU资源、处理效率(处理时长)等信息进行衡量。例如,确定模块202可以对候选执行计划处理子数据时所占用的存储资源、CPU资源、处理时长分别进行评分,并通过相应的加权求和计算出该候选执行计划处理子数据所对应的代价评分。其中,评分值越大,表征该候选执行计划处理子数据的代价越大;反之,评分值越小,表征该候选执行计划处理子数据的代价越小。然后,确定模块202可以根据多种候选执行计划对应的处理子数据的代价,将处理子数据的代价最小(如代价评分的值最小)的候选执行计划确定为目标执行计划。如此,可以使得确定模块202在处理原始数据时,能够得到较优的数据处理效果。
此外,数据处理装置200还可以支持用户100对于目标优化规则的自定义。比如,呈现模块204可以向用户100呈现优化规则定义界面,以便用户100在该优化规则定义界面上针对优化规则进行定义,从而确定模块202可以根据用户100所执行的定义操作,生成该目标优化规则。例如,在图8所示的优化规则定义界面中,用户100可以在该优化规则定义界面中定义“列运算*1优化”以及“重复格式转换优化”的规则。其中,“列运算*1优化”是指当执行计划中的存在针对与原始数据中的一列或者多列数据计算其与1的乘积的算子时,可以删除该算子。“重复格式转换优化”,是指当执行计划中存在将同一格式转化为其它不同格式的多个算子时,仅保留最后一个算子执行,而可以删除其余算子,如此,基于该执行计划可以仅执行一次格式转换。
实际应用时,数据处理装置200可以预先配置有其它优化规则,如前述的算子合并、去重、去冗余、执行顺序优化等规则。从而确定模块202在确定目标执行计划的过程中,可以根据内置的优化规则以及用户100自定义的优化规则实现对于执行计划的优化。进一步的,在用户100自定义优化规则后,确定模块202还可以根据经过用户100自定义优化规则处理后的执行计划处理子数据,以及根据为经过用户100自定义优化规则处理后的执行计划处理子数据,并通过呈现模块204将加入用户100自定义优化规则前后对应的执行计划所对应的数据处理结果呈现给用户100,以便由用户100根据加入自定义优化规则前后所对应的数据处理结果,确定是否对自定义的优化规则进行调整和更换,从而提高用户100自定义优化规则的体验。
此外,呈现模块204还可以在图8所示的优化规则定义界面中,向用户100呈现数据处理装置200中内置的优化规则,以便用户100对该内置的优化规则进行调整和选择,从而提高用户100选择优化规则的自由度和灵活性,提高用户体验。实际应用时,呈现模块204可以根据预先配置的推荐策略向用户100推荐优化规则,如可以根据优化规则被使用的次数或者频率向用户100进行推荐等。
应理解,确定模块202可以执行上述优化执行计划的示例中的任意一种或者多种实现方式来优化得到目标执行计划,如确定模块202可以同时上述示例所示的实现方式来优化得到目标执行计划等。
S304:计划执行模块203根据目标执行计划对原始数据进行处理,得到该原始数据对应的处理结果。
在确定模块202得到目标执行计划后,计划执行模块203可以根据该目标执行计划中包括的多个算子以及各个算子的执行顺序,依次运行算子来处理原始数据,以得到该原始数据所对应的处理结果。
进一步的,针对于原始数据对应的处理结果,呈现模块204还可以将该处理结果中的部分或者全部内容呈现给用户100,以便用户100对于该处理结果的具体内容。
上述各实施例中所涉及到的数据处理装置200以单独的硬件设备实现。下面,从硬件实现角度对数据处理装置200进行详细介绍。
图9提供了一种计算机设备。图9所示的计算机设备900具体可以用于实现上述图2至图3所示实施例中数据处理装置200的功能。
计算机设备900包括总线901、处理器902、通信接口903和存储器904。处理器902、存储器904和通信接口903之间通过总线901通信。总线901可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extendedindustry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口903用于与外部通信,例如接收终端发送的数据获取请求等。
其中,处理器902可以为中央处理器(central processing unit,CPU)。存储器904可以包括易失性存储器(volatile memory),例如随机存取存储器(random accessmemory,RAM)。存储器904还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器,HDD或SSD。
存储器904中存储有可执行代码,处理器902执行该可执行代码以执行前述控制节点109所执行的方法。
具体地,在实现图3所示实施例的情况下,且图3所示实施例中所描述的数据处理装置200为通过软件实现的情况下,执行图3中的数据处理装置200的功能所需的软件或程序代码存储在存储器904中,数据处理装置200与其它设备的交互通过通信接口903实现,处理器902用于执行存储器904中的指令,实现数据处理装置200所执行的方法。
此外,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机设备上运行时,使得计算机设备执行上述实施例所述的方法。
本申请实施例还提供了一种计算机程序产品,所述计算机程序产品被计算机执行时,所述计算机执行前述数据提供方法的任一方法。该计算机程序产品可以为一个软件安装包,在需要使用前述数据提供方法的任一方法的情况下,可以下载该计算机程序产品并在计算机上执行该计算机程序产品。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (22)
1.一种数据处理方法,其特征在于,所述方法应用于数据处理装置,所述方法包括:
获取用户定义的基于第一编程语言的原始算子;
根据所述原始算子,确定基于第二编程语言的目标算子,所述第二编程语言为所述数据处理装置所在的部署环境支持的编程语言,所述目标算子的数据处理功能与所述原始算子的数据处理功能相匹配;
确定目标执行计划,所述目标执行计划至少包括所述目标算子;
根据所述目标执行计划对原始数据进行处理,得到所述原始数据对应的处理结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述原始算子,确定基于第二编程语言的目标算子,包括:
根据所述原始算子的功能标识,从算子库中查找出功能标识与所述原始算子的功能标识相匹配的所述目标算子,所述算子库中包括多个基于所述第二编程语言的算子,所述多个基于所述第二编程语言的算子中包括所述目标算子。
3.根据权利要求1所述的方法,其特征在于,所述根据所述原始算子,确定基于第二编程语言的目标算子,包括:
获取所述原始算子对应的针对子数据的数据处理结果,所述子数据为所述原始数据中的部分数据;
根据所述数据处理结果、所述子数据,为所述原始算子从算子库中搜索出至少一个候选算子,每个候选算子针对所述子数据的数据处理结果与所述原始算子对应的针对所述子数据的数据处理结果匹配,所述算子库包括多个基于所述第二编程语言的算子;
从所述至少一个候选算子中确定所述目标算子。
4.根据权利要求3所述的方法,其特征在于,所述从所述至少一个候选算子中确定所述目标算子包括:
确定所述至少一个候选算子中每个候选算子处理所述子数据的代价;
将处理所述子数据的代价最小的候选算子作为所述目标算子。
5.根据权利要求1所述的方法,其特征在于,所述根据所述原始算子,确定基于第二编程语言的目标算子,包括:
根据所述原始算子,利用预先完成训练的预测模型预测得到与所述原始算子的功能相匹配的算子标识;
根据所述算子标识从算子库中查找所述算子标识对应的目标算子,所述算子库包括多个基于所述第二编程语言的算子。
6.根据权利要求5所述的方法,其特征在于,所述根据所述原始算子,利用预先完成训练的预测模型预测出与所述原始算子的功能相匹配的算子标识,包括:
对所述原始算子进行解析,得到所述原始算子对应的抽象语法树;
将所述抽象语法树输入至所述预测模型,得到所述预测模型输出的与所述原始算子的抽象语法树相匹配的算子标识。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述确定目标执行计划包括:
根据基于所述第二编程语言的多个算子生成初始执行计划,所述多个算子中包括所述目标算子;
根据目标优化规则对所述初始执行计划执行优化操作,得到所述目标执行计划,所述优化操作包括算子合并、算子去重、算子去冗余、算子执行顺序优化以及用户指定操作中的任意一种或多种。
8.根据权利要求7所述的方法,其特征在于,当所述优化操作包括所述算子执行顺序优化时,所述对所述初始执行计划中的多个算子执行优化操作,得到所述目标执行计划包括:
根据所述初始执行计划中的多个算子生成多种候选执行计划,每种候选执行计划中定义了所述多个算子处理子数据的执行顺序,不同候选执行计划中的所述多个算子的执行顺序不同,所述子数据为所述原始数据中的部分数据;
根据所述多种候选执行计划对应的处理所述子数据的代价,将处理所述子数据的代价最小的候选执行计划确定为所述目标执行计划。
9.根据权利要求7或8任一项所述的方法,其特征在于,当所述优化操作包括用户指定操作时,所述方法还包括:
呈现优化规则定义界面;
根据用户在所述优化规则定义界面上针对优化规则所执行的定义操作,生成所述目标优化规则。
10.根据权利要求1至9任一项所述的方法,其特征在于,所述方法还包括:
呈现算子选择界面,所述算子选择界面呈现有多个候选算子的标识,所述多个候选算子基于所述第二编程语言实现;
根据所述用户在所述算子选择界面上执行的选择操作,从所述多个候选算子中确定所述选择操作对应的目标候选算子;
所述确定目标执行计划,包括:
根据所述目标候选算子以及所述目标算子,生成所述目标执行计划。
11.一种数据处理装置,其特征在于,所述装置包括:
通信模块,用于获取用户定义的基于第一编程语言的原始算子;
确定模块,用于根据所述原始算子,确定基于第二编程语言的目标算子,所述第二编程语言为所述数据处理装置所在的部署环境支持的编程语言,所述目标算子的数据处理功能与所述原始算子的数据处理功能相匹配;并确定目标执行计划,所述目标执行计划至少包括所述目标算子;
计划执行模块,用于根据所述目标执行计划对原始数据进行处理,得到所述原始数据对应的处理结果。
12.根据权利要求11所述的装置,其特征在于,所述确定模块,具体用于根据所述原始算子的功能标识,从算子库中查找出功能标识与所述原始算子的功能标识相匹配的所述目标算子,所述算子库中包括多个基于所述第二编程语言的算子,所述多个基于所述第二编程语言的算子中包括所述目标算子。
13.根据权利要求11所述的装置,其特征在于,所述确定模块,具体用于:
获取所述原始算子对应的针对子数据的数据处理结果,所述子数据为所述原始数据中的部分数据;
根据所述数据处理结果、所述子数据,为所述原始算子从算子库中搜索出至少一个候选算子,每个候选算子针对所述子数据的数据处理结果与所述原始算子对应的针对所述子数据的数据处理结果匹配,所述算子库包括多个基于所述第二编程语言的算子;
从所述至少一个候选算子中确定所述目标算子。
14.根据权利要求13所述的装置,其特征在于,所述确定模块,具体用于:
确定所述至少一个候选算子中每个候选算子处理所述子数据的代价;
将处理所述子数据的代价最小的候选算子作为所述目标算子。
15.根据权利要求11所述的装置,其特征在于,所述确定模块,具体用于:
根据所述原始算子,利用预先完成训练的预测模型预测得到与所述原始算子的功能相匹配的算子标识;
根据所述算子标识从算子库中查找所述算子标识对应的目标算子,所述算子库包括多个基于所述第二编程语言的算子。
16.根据权利要求15所述的装置,其特征在于,所述确定模块,具体用于:
对所述原始算子进行解析,得到所述原始算子对应的抽象语法树;
将所述抽象语法树输入至所述预测模型,得到所述预测模型输出的与所述原始算子的抽象语法树相匹配的算子标识。
17.根据权利要求11至16任一项所述的装置,其特征在于,所述确定模块,具体用于:
根据基于所述第二编程语言的多个算子生成初始执行计划,所述多个算子中包括所述目标算子;
根据目标优化规则对所述初始执行计划执行优化操作,得到所述目标执行计划,所述优化操作包括算子合并、算子去重、算子去冗余、算子执行顺序优化以及用户指定操作中的任意一种或多种。
18.根据权利要求17所述的装置,其特征在于,当所述优化操作包括所述算子执行顺序优化时,所述确定模块,具体用于:
根据所述初始执行计划中的多个算子生成多种候选执行计划,每种候选执行计划中定义了所述多个算子处理子数据的执行顺序,不同候选执行计划中的所述多个算子的执行顺序不同,所述子数据为所述原始数据中的部分数据;
根据所述多种候选执行计划对应的处理所述子数据的代价,将处理所述子数据的代价最小的候选执行计划确定为所述目标执行计划。
19.根据权利要求17或18任一项所述的装置,其特征在于,当所述优化操作包括用户指定操作时,所述装置还包括:
呈现模块,用于呈现优化规则定义界面;根据用户在所述优化规则定义界面上针对优化规则所执行的定义操作,生成所述目标优化规则。
20.根据权利要求11至19任一项所述的装置,其特征在于,所述装置还包括:
呈现模块,用于呈现算子选择界面,所述算子选择界面呈现有多个候选算子的标识,所述多个候选算子基于所述第二编程语言实现;根据所述用户在所述算子选择界面上执行的选择操作,从所述多个候选算子中确定所述选择操作对应的目标候选算子;
所述确定模块,具体用于根据所述目标候选算子以及所述目标算子,生成所述目标执行计划。
21.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器;
所述处理器用于执行所述存储器中存储的指令,以使得所述计算机设备执行权利要求1至10中任一项所述的方法。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在多个计算设备上运行时,使得所述多个计算设备执行如权利要求1至权利要求10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110785674.7A CN115599356A (zh) | 2021-07-12 | 2021-07-12 | 一种数据处理方法、装置及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110785674.7A CN115599356A (zh) | 2021-07-12 | 2021-07-12 | 一种数据处理方法、装置及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115599356A true CN115599356A (zh) | 2023-01-13 |
Family
ID=84840896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110785674.7A Pending CN115599356A (zh) | 2021-07-12 | 2021-07-12 | 一种数据处理方法、装置及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599356A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117390225A (zh) * | 2023-09-06 | 2024-01-12 | 苏州数设科技有限公司 | 一种工业数据处理方法、装置、电子设备及可读存储介质 |
US11983086B2 (en) * | 2021-12-31 | 2024-05-14 | Beijing Baidu Netcom Science Technology Co., Ltd. | Method for processing data, and electronic device, storage medium and program product |
-
2021
- 2021-07-12 CN CN202110785674.7A patent/CN115599356A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11983086B2 (en) * | 2021-12-31 | 2024-05-14 | Beijing Baidu Netcom Science Technology Co., Ltd. | Method for processing data, and electronic device, storage medium and program product |
CN117390225A (zh) * | 2023-09-06 | 2024-01-12 | 苏州数设科技有限公司 | 一种工业数据处理方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109804362B (zh) | 通过机器学习确定主键-外键关系 | |
CN109240901B (zh) | 性能分析方法、性能分析装置、存储介质和电子设备 | |
US10621493B2 (en) | Multiple record linkage algorithm selector | |
CN112889042A (zh) | 机器学习中超参数的识别与应用 | |
CN112328891B (zh) | 训练搜索模型的方法、搜索目标对象的方法及其装置 | |
US11651014B2 (en) | Source code retrieval | |
CN115599356A (zh) | 一种数据处理方法、装置及相关设备 | |
CN103534696A (zh) | 针对口语语言理解中的域检测利用查询点击记录 | |
CN109285024B (zh) | 在线特征确定方法、装置、电子设备及存储介质 | |
CN111723192B (zh) | 代码推荐方法和装置 | |
CN112860685A (zh) | 对数据集的分析的自动推荐 | |
CN112580896A (zh) | 知识点预测方法、装置、设备及存储介质 | |
CN116719520A (zh) | 代码生成方法及装置 | |
CN112148952A (zh) | 一种任务执行方法、装置、设备及计算机可读存储介质 | |
CN113760891A (zh) | 一种数据表的生成方法、装置、设备和存储介质 | |
CN114780443A (zh) | 微服务应用自动化测试方法、装置、电子设备及存储介质 | |
CN113869408A (zh) | 一种分类方法及计算机设备 | |
CN114036345A (zh) | 一种轨迹数据的处理方法、设备及存储介质 | |
CN114510629A (zh) | 基于大数据挖掘的数字化医疗推送优化方法及医疗ai系统 | |
CN115729797A (zh) | 代码相似函数检测方法、装置、电子设备及存储介质 | |
CN117313111B (zh) | 一种基于汽车信息安全测试用例的标注与索引方法和系统 | |
Chen et al. | DUETCS: Code Style Transfer through Generation and Retrieval | |
CN115203367A (zh) | 数据获取方法、装置、设备及存储介质 | |
WO2024113641A1 (zh) | 视频推荐方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN117609021A (zh) | 测试用例优化方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |