CN110019207B - 数据处理方法和装置以及脚本显示方法和装置 - Google Patents
数据处理方法和装置以及脚本显示方法和装置 Download PDFInfo
- Publication number
- CN110019207B CN110019207B CN201711064594.2A CN201711064594A CN110019207B CN 110019207 B CN110019207 B CN 110019207B CN 201711064594 A CN201711064594 A CN 201711064594A CN 110019207 B CN110019207 B CN 110019207B
- Authority
- CN
- China
- Prior art keywords
- workflow
- nodes
- node
- merging
- workflow nodes
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种数据处理方法和装置以及脚本显示方法和装置。其中,该方法包括:确定用于对数据进行处理的工作流,从至少两个工作流节点中筛选出满足合并条件的工作流节点,并对满足合并条件的工作流节点进行合并,得到合并后的工作流,依据合并后的工作流对数据进行处理,其中,工作流至少包括两个工作流节点。本发明解决了现有技术中工作流中的各个流节点单独处理,处理效率低的技术问题。
Description
技术领域
本发明涉及大数据领域,具体而言,涉及一种数据处理方法和装置以及脚本显示方法和装置。
背景技术
随着现代科技尤其是以互联网为代表的高新科技产业的快速发展,人类的数据处理能力得到了极大地提高。大数据的应用伴随高科技产品而来,并且已经覆盖了社会的各个领域,各种大数据处理平台应运而生。当前大部分大数据处理平台的数据库引擎(例如SQL引擎)可支持表变量的定义和表变量的内联展开,例如,Maxcompute的compiler2.0。根据本领域内的常用技术可知,大数据SQL语言优化器(Optimizer)可以在更大范围的上下文环境下对系统进行优化,可使得大数据的数据处理系统能够得到比较好的优化效果。
目前,在大数据处理任务比较复杂的情况下,通常是将复杂的大数据处理任务分成多个子任务,并通过工作流的方式来执行任务。但在当前的工作流节点只是解析子任务依赖关系的情况下,如果此时仍根据工作流的状态将可执行的任务节点提交到大数据平台,由大数据平台处理,则没有节点间关系的合并优化,每个子节点的输出表数据也会落盘,占用了存储资源。
针对上述现有技术中工作流中的各个流节点单独处理,处理效率低的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据处理方法和装置以及脚本显示方法和装置,以至少解决现有技术中工作流中的各个流节点单独处理,处理效率低的技术问题。
根据本发明实施例的一个方面,提供了一种数据处理方法,包括:确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点;从至少两个工作流节点中筛选出满足合并条件的工作流节点;对满足合并条件的工作流节点进行合并,得到合并后的工作流;依据合并后的工作流对数据进行处理。
根据本发明实施例的另一方面,还提供了一种脚本显示方法,包括:接收用于查看对数据进行处理的脚本的请求;根据请求,获取脚本,其中,脚本包括合并脚本,合并脚本为:将用于对数据进行处理的工作流所包括的满足合并条件的工作流节点进行合并后得到的合并工作流节点对应的脚本;显示获取的脚本。
根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:确定模块,用于确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点;筛选模块,用于从至少两个工作流节点中筛选出满足合并条件的工作流节点;合并模块,用于对满足合并条件的工作流节点进行合并,得到合并后的工作流;处理模块,用于依据合并后的工作流对数据进行处理。
根据本发明实施例的另一方面,还提供了一种脚本显示装置,包括:接收模块,用于接收用于查看对数据进行处理的脚本的请求;获取模块,用于根据请求,获取脚本,其中,脚本包括合并脚本,合并脚本为:将用于对数据进行处理的工作流所包括的满足合并条件的工作流节点进行合并后得到的合并工作流节点对应的脚本;显示模块,用于显示获取的脚本。
根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行以下处理步骤:确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点;从至少两个工作流节点中筛选出满足合并条件的工作流节点;对满足合并条件的工作流节点进行合并,得到合并后的工作流;依据合并后的工作流对数据进行处理。
根据本发明实施例的另一方面,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行以下处理步骤:确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点;从至少两个工作流节点中筛选出满足合并条件的工作流节点;对满足合并条件的工作流节点进行合并,得到合并后的工作流;依据合并后的工作流对数据进行处理。
根据本发明实施例的另一方面,还提供了一种数据处理系统,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点;从至少两个工作流节点中筛选出满足合并条件的工作流节点;对满足合并条件的工作流节点进行合并,得到合并后的工作流;依据合并后的工作流对数据进行处理。
在本发明实施例中,采用合并工作流节点的方式,通过确定用于对数据进行处理的工作流,从至少两个工作流节点中筛选出满足合并条件的工作流节点,并对满足合并条件的工作流节点进行合并,得到合并后的工作流,依据合并后的工作流对数据进行处理,其中,工作流至少包括两个工作流节点,达到了提高复杂的大数据处理工作流的执行效率的目的,从而实现了减少处理流节点过程中中间数据的存储,节省了存储成本的技术效果,进而解决了现有技术中工作流中的各个流节点单独处理,处理效率低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的数据处理方法的方法流程图;
图2是根据本发明实施例的一种数据处理方法的方法流程图;
图3(a)是根据本发明实施例的一种可选的单依赖模型的合并示意图;
图3(b)是根据本发明实施例的一种可选的单依赖模型的合并示意图;
图4是根据本发明实施例的一种可选的多依赖模型的合并示意图;
图5是根据本发明实施例的一种可选的跨依赖模型的合并示意图;
图6是根据本发明实施例的一种可选的合并工作流节点的方法流程图;
图7(a)是根据本发明实施例的一种可选的合并工作流节点的示意图;
图7(b)是根据本发明实施例的一种可选的合并工作流节点的示意图;
图7(c)是根据本发明实施例的一种可选的合并工作流节点的示意图;
图7(d)是根据本发明实施例的一种可选的合并工作流节点的示意图;
图8是根据本发明实施例的一种可选的数据处理方法的方法流程图;
图9是根据本发明实施例的一种可选的语法树的结构示意图;
图10是根据本发明实施例的一种待合并的工作流的结构示意图;
图11是根据本发明实施例的一种数据处理装置的结构示意图;
图12是根据本发明实施例的一种脚本显示方法的方法流程图;
图13是根据本发明实施例的一种可选的脚本显示方法的方法流程图;
图14是根据本发明实施例的一种可选的脚本显示装置的结构示意图;以及
图15是根据本发明实施例的一种计算机终端的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
(1)工作流,即Workflow,用于描述一个工作任务的所有操作步骤及操作步骤之间的依赖或传递关系,是对工作流程及各个操作步骤之间业务规则的抽象、概括的描述。
(2)大数据工作流,是描述数据处理工作需要执行的各个数据处理子任务及子任务之间依赖关系的工作流模式模型,也是大数据处理工程中任务依赖管理与调度模型。
(3)工作流子图,是指从整个工作流图中截取得到的、具有依赖关系的、由部分节点组成的图,其中,工作流节点和节点间的逻辑关系通常以图模型来表示。
(4)大数据处理平台,指能够执行大数据处理任务的平台。
(5)大数据工作流管理及调度平台,指能够创建、管理工作流模式,并根据工作流模型调度数据处理任务,驱动并监控工作流执行的平台。
(6)表变量,是一种结构化查询语言中的一种变量,其数据结构符合语言规范中关于表的定义,可以用返回行集的查询语句对变量赋值。
(7)表变量内联展开,将表变量引用替换为表变量值的过程,其中,表变量值可以为查询语句。
(8)节点输出表,指节点中SQL脚本,将数据最终输出的表。
(9)节点依赖表,指节点中SQL脚本依赖的表,即数据输入表。
根据本发明实施例,还提供了一种数据处理方法的方法实施例,需要说明的是,本实施例可以应用在大数据管理方面,本申请所提出的方案可以对大数据处理中工作流进行整合与优化,将工作流中有特定依赖关系的多个子任务合并为一个任务,并进行整体的优化和提交,进而,通过本申请所提出的方案可以提高复杂的大数据处理工作流的执行效率,减少中间数据的存储,进而达到节省了存储成本,提高处理大数据的效率的技术效果。
随着互联网技术的快速发展,大数据在社会各方各面得到了广泛的应用。在对大数据进行处理时,一般是通过大数据处理平台(例如,Maxcompute的compiler2.0)来对其进行处理。在大数据处理任务比较复杂的情况下,通常是将复杂的大数据处理任务分为多个子任务,并通过工作流的方式来执行子任务。然而现有的工作流节点调度引擎只是根据节点间的依赖关系来分析出当前可以提交的子节点,并将子节点任务单独提交给大数据处理平台执行。在执行任务的过程中,大数据处理平台并没有对多个节点间的关系进行合并优化,每个子节点的输出表数据也会落盘,占用了大数据处理平台的存储资源。
为解决上述问题,申请人经研究提出了一种数据处理方法,如图1所示的一种可选的数据处理方法的方法流程图,主要分为两步,第一步是工作流模型的分析,第二部是子节点的合并、提交与优化。具体的,大数据处理平台对大数据工作流进行分析和筛选,得到待优化的工作流子图集合,并对每一个工作流子图进行优化。首先,需要在大数据处理平台中输入待优化的工作流子图,根据对待优化的工作流子图中的工作流节点,通过语法生成器,生成工作流节点的生成树,从而得到工作流子图中每个工作流节点的输出表、数据查询语句以及依赖表名称和文本中的位置。其次,再对每一个工作流节点的脚本执行表变量替换,得到替换后的SQL脚本。最后,对SQL脚本进行整合和编译,按照统一的执行计划执行,最后,将执行结果提交到大数据处理平台,大数据处理平台对执行结果进行优化并执行。至此,便完成了对工作流节点的合并与组合优化的过程。
通过上述方案,本申请可以有效地提高复杂的大数据处理工作流的执行效率。此外,由于在对大数据进行处理的过程中,不需要对中间所产生的数据进行存储,因此,通过本申请的上述方案还可以效地节省存储成本。
在上述应用场景下,作为一种可选的实施例,图2示出了根据本申请实施例的一种数据处理方法的方法流程图,如图2所示,该方法具体包括如下步骤:
步骤S202,确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点。
需要说明的是,用于对数据进行处理的工作流为需要进行优化处理的工作流,即该工作流中存在可合并或可进行组合的工作流节点。此外,大数据处理平台可得到对数据进行处理的工作流,即对数据的处理流程。
在一种可选的实施例中,大数据处理平台通过研发人员的设置,可得到对数据进行处理的完成流程,例如,将数据插入到数据库中,再从数据库读取该数据,并对该数据进行运算,得到运算结果,最后将运算结果更新到数据库中。上述对数据的操作为一个工作流,在这个工作流中,插入数据、读取数据、对数据进行运算以及更新数据为上述工作流中的工作流节点。
此外,还需要说明的是,通过确定用于对数据进行处理的工作流得到工作流中的每个工作流节点,再根据工作流节点与工作流节点之间的依赖关系或传递关系,对工作流节点进行合并处理,进而完成对工作流节点的优化过程。
步骤S204,从至少两个工作流节点中筛选出满足合并条件的工作流节点。
在一种可选的实施例中,大数据处理平台在确定需要进行优化处理的工作流后,再进一步确定该工作流中的工作流节点,并根据优化深度搜索(Depth First Search,简称为DFS)算法对工作流中的每个工作流节点进行遍历,根据遍历的结果来确定工作流中工作流节点与工作流节点之间的依赖关系或传递关系,进而确定工作流中的哪些工作流节点符合合并工作流的条件。
需要说明的是,可根据预定依赖模型来确定工作流节点是否符合合并的条件,具体可根据工作流节点的入度情况和/或出度情况来确定是否对该工作流节点进行合并。
另外,通过从多个工作流节点中筛选出符合合并条件的工作流节点,根据工作流节点之间的依赖关系对工作流节点进行合并,进而根据合并工作流节点之后的工作流再对数据进行处理,可有效提高工作流的执行效率。
此外,由于是将多个工作流节点进行合并,因此,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用,即减少了中间数据的存储,进而节省了存储成本。
步骤S206,对满足合并条件的工作流节点进行合并,得到合并后的工作流。
在一种可选的实施例中,在根据DFS算法得到满足合并条件的工作流节点后,进一步判断满足合并条件的工作流节点与预定依赖模型中的哪一种模型相匹配,即确定与满足合并条件的工作流节点匹配的预定依赖模型,然后再根据与满足合并条件的工作流节点相匹配的预定依赖模型对工作流节点进行合并,得到合并后的工作流节点,并将合并后的工作流节点代替原工作流中相应的合并前的工作流节点,从而形成合并后的工作流。
需要说明的是,每个预定依赖模型具有一个特定的合并方案,即在不同的预定依赖模型下,对工作流节点合并的策略是不相同的。此外,上述预定依赖模型至少包括如下之一:单依赖模型、多依赖模型以及跨依赖模型。
还需要说明的是,通过对满足符合条件的工作流节点进行合并,得到工作流节点合并后的工作流,进而根据工作流节点合并后的工作流对数据进行处理。由于在对工作流节点合并之后,工作流节点的数量减少了,从而在执行工作流的过程中,减少了中间数据的存储,节省了存储成本,提高了工作流的执行效率。
步骤S208,依据合并后的工作流对数据进行处理。
需要说明的是,在得到工作流节点合并后的工作流之后,根据工作流对数据进行处理。其中,在对数据处理的过程中,不再对每个任务节点进行单独处理,而是将多个任务节点进行合并后进行整体处理,从而有效提高了数据处理的效率。
基于步骤S202至步骤S208所限定的方案,可以获知,通过确定用于对数据进行处理的工作流,从至少两个工作流节点中筛选出满足合并条件的工作流节点,并对满足合并条件的工作流节点进行合并,得到合并后的工作流,依据合并后的工作流对数据进行处理,其中,工作流至少包括两个工作流节点。
容易注意到的是,由于是将多个工作流节点进行合并,因此,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用,即减少了中间数据的存储,进而节省了存储成本。
本申请的上述方案可以达到提高复杂的大数据处理工作流的执行效率的目的,从而实现了减少处理流节点过程中中间数据的存储,节省了存储成本的技术效果,进而解决了现有技术中工作流中的各个流节点单独处理,处理效率低的技术问题。
此外,还需要说明的是,可以根据工作流中的工作流节点之间的依赖关系来确定是否对工作流节点进行合并,具体的,依据工作流所包括的工作流节点之间的依赖关系,从至少两个工作流节点中筛选出满足合并条件的工作流节点。
在一种可选的实施例中,依据工作流所包括的工作流节点之间的依赖关系,从至少两个工作流节点中筛选出满足合并条件的工作流节点包括:依据预定依赖模型,从至少两个工作流节点中筛选出满足合并条件的工作流节点,其中,预定依赖模型用于表征工作流所包括的工作流节点之间的依赖关系,预定依赖模型包括:单依赖模型、多依赖模型和跨依赖模型。
在一种可选的实施例中,单依赖模型表征的工作流节点之间的依赖关系是:工作流节点只有一个子节点。如图3(a)所示的一种可选的单依赖模型的合并示意图,在图3(a)中,左侧为工作流节点合并前的工作流,右侧为工作流节点合并后的工作流。由图3(a)可知,工作流节点A只有一个子节点和一个父节点,并且,子节点只有一个父节点,该父节点为工作流节点A。即工作流节点A的入度为1,出度也为1,并且子节点的入度也为1。综上所述,在单依赖模型中,工作流节点的入度为1,出度为1,并且该工作流节点所对应的子节点的入度也为1。
需要说明的是,节点的入度为该节点所具有的父节点的个数,而节点的出度,为该节点所具有的子节点的个数。
在另一种可选的实施例中,多依赖模型表征的工作流节点之间的依赖关系是:工作流节点存在多个父节点。如图4所示的一种可选的多依赖模型的合并示意图,同样,在图4中,左侧为工作流节点合并前的工作流,右侧为工作流节点合并后的工作流,由图4可知,工作流节点D具有多个父节点(如图4中的节点A、节点B和节点C),并且每个父节点的出度为1(如节点C的出度为1),而该工作流节点的子节点的个数可以为一个,也可以为多个。即在多依赖模型中,工作流节点的父节点入度为n(n>1),而该工作流节点的父节点的出度为1。
在另一种可选的实施例中,跨依赖模型表征的工作流节点之间的依赖关系是:工作流节点只有一个子节点和一个父节点。如图5所示的一种可选的跨依赖模型的合并示意图,同样,在图5中,左侧为工作流节点合并前的工作流,右侧为工作流节点合并后的工作流,由图5可知,工作流节点A的入度和出度均为1,但工作流节点A的子节点D的入度可以不为1,即,子节点的入度可以为n(n>1)。跨在多依赖模型中,工作流节点的入度和出度均为1,而子节点的入度大于1。
需要说明的是,对满足合并条件的工作流节点进行合并,可以得到合并后的工作流,其中,根据不同的预定依赖模型得到的合并后的工作流是不相同的。根据以上述三种预定依赖模型可得到如下三种合并后的工作流:
(1)在预定依赖模型为单依赖模型的情况下,将只有一个子节点的工作流节点和子节点合并为一个节点。具体如图3(a)所示,在图3(a)中,工作流节点A的出度为1,工作流节点A的子节点B的入度为1,此时,将节点A和节点B进行合并,合并后形成一个新的节点C,如图3(a)的右侧所示。需要说明的是,将工作流节点和其对应的子节点进行合并,并不会影响其他的任何节点。
此外,如图3(b)所示,左侧为工作流节点合并之前的工作流,右侧为工作流节点合并之后的工作流。在图3(b)中,将节点A和节点B进行了合并,得到合并后的节点C。在工作流节点合并后的工作流中,节点C的出度为1,节点C的子节点的入度为1,此时,基于节点C可继续进行合并。
(2)在预定依赖模型为多依赖模型的情况下,将存在多个父节点的工作流节点与多个父节点合并为一个节点。具体如图4所示,工作流节点D的入度为3,工作流节点D有3个父节点,即节点A、节点B和节点C,其中,每个父节点的出度也均为1,例如,节点A的子节点只有一个,节点B的子节点也只有一个。在这种情况下,可将节点D与其对应的父节点进行合并,得到合并后的工作流节点E,如图4的右侧所示。
(3)在预定依赖模型为跨依赖模型的情况下,将只有一个子节点和一个父节点的工作流节点与子节点合并为一个节点。具体如图5所示,工作流节点A的入度为1,出度也为1,但其对应的子节点B的入度为2,此时确定该工作流所对应的预定依赖模型为跨依赖模型。在这种情况下,可将节点A与其对应的子节点D进行合并,得到合并后的工作流节点C,如图5的右侧所示。此时,合并后的节点C的入度为2。
在一种可选的实施例中,如图6所示的一种可选的合并工作流节点的方法流程图,从至少两个工作流节点中筛选出满足合并条件的工作流节点,以及对满足合并条件的工作流节点进行合并,得到合并后的工作流包括如下步骤:
步骤S602,依据单依赖模型,从至少两个工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,工作流变成第一工作流;
步骤S604,依据多依赖模型,从第一工作流所包括的工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,第一工作流变成第二工作流;
步骤S606,依据跨依赖模型,从第二工作流所包括的工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,第二工作流变成第三工作流。
具体的,图7(a)、图7(b)、图7(c)和图7(d)分别示出了一种可选的合并工作流节点的示意图,由图7(a)可知,依据单依赖模型可将虚线框A中的节点合并为图7(b)中的节点A,将虚线框B中的节点合并为图7(b)中的节点B,将虚线框C中的节点合并为图7(b)中的节点C,即可得到图7(b)所示的工作流,即第一工作流。在得到图7(b)所示的第一工作流之后,依据单依赖模型将虚线框D中的节点合并为图7(c)中的节点D,依据多依赖模型将虚线框E中的节点合并为图7(c)中的节点E,从而将图7(b)所示的工作流优化为图7(c)所示的工作流,即得到第二工作流。再得到第二工作流之后,节点C的入度和出度均为1,节点C的子节点的入度为4,因此,可依据跨依赖模型对节点C进行合并得到图7(d)所示的节点G;同样,节点F的入度和出度也均为1,节点F的子节点的入度为3,依赖跨依赖模型对节点F进行合并,得到图7(d)所示的节点H。至此,图7(c)所示的工作流便转换为图7(d)所示的工作流,即第三工作流。
需要说明的是,在依据单依赖模型对工作流节点进行合并之后,如果仍存在与单依赖模型相匹配的工作流节点,则继续依据单依赖模型对工作流节点进行合并,直至整个工作流遍历完成。同样,依据多依赖模型和跨依赖模型对工作流节点进行合并的过程类似,在此不再赘述。另外,在依据跨依赖模型对工作流节点进行合并后,如果发现工作流中仍存在与单依赖模型相匹配的工作流节点,此时,可依据单依赖模型继续对工作流节点进行合并。
在一种可选的实施例中,如图8所示的一种可选的数据处理方法的方法流程图,对满足合并条件的工作流节点进行合并,得到合并后的工作流具体包括如下步骤:
步骤S802,通过语法生成器,将满足合并条件的工作流节点中的每一个工作流节点的脚本生成每一个工作流节点对应的结构化查询语言SQL语句,其中,SQL语句中包括:工作流节点输出表,工作流节点对应的查询子句,和工作流节点依赖的表名;
步骤S804,将每一个工作流节点对应的输出表替换为表变量;
步骤S806,依据满足合并条件的工作流节点间上下游关系,将替换为表变量的满足合并条件的工作流节点中的每一个工作流节点的SQL语句合并到一个脚本文件中。
需要说明的是,通过语法生成器可将工作流节点的SQL脚本生成语法树。其中,语法生成器是基于语法规则,将原始脚本生成语法树的工具,包括但不限于antlr(AnotherTool for Language Recognition,开源语法分析器)、Yacc(Yet Another CompilerCompiler的简称)。此外,通过语法生成器所生成的语法书的节点的信息至少包括如下之一:当前节点的语法类型以及节点在原始文本(或段落)的对应关系。
在一种可选的实施例中,某一条SQL语句为:insert into a select b.id,b.namefrom b where b.company=’aliyun’;
基于语法规则,语法生成器将上述SQL语句生成如图9所示的语法树。在图9中,语法树中的每一个节点的名字标识节点的语法类型(例如,insertClause指示该语法类型为插入语句),也可从数据中读取到节点在文本中对应位置,例如,从图9中的insertClause节点下定位到输出表的名字为a;从select QueryExpression中提取数据查询语句selectb.id,b.name from b where b.company=’aliyun’;从select语句中解析出依赖的表名为b。通过上述方法可获取到所有的待合并的工作流节点的输出表、数据查询子句和依赖的表名。
在另一种可选的实施例中,在得到工作流节点所对应的结构化查询语言SQL语句之后,需要对工作流节点的输出表进行表变量的替换。例如,将SQL语句:
insert into a select b.id,b.name from b where b.company=’aliyun’
替换为:
@_var_a:=select b.id,b.name from b where b.company=’aliyun’
在得到替换后的语句之后,依据工作流节点之间的上下游关系,将工作流节点的SQL语句合并到同一个脚本文件中,可使用支持表变量解析和内联展示的SQL编译器进行脚本编译,生成一个大的执行计划,并将其提交到大数据平台进行优化并执行。其中,上述SQL编译器指所有支持表变量(table variable)定义与内联展开的SQL脚本编译器。
在另一种可选的实施例中,如图10所示的待合并的工作流的结构示意图,其中,工作流节点的依赖关系表示下游节点依赖上游节点的输出表,即节点C依赖节点A和节点B的输出表,其中,图10中的5个节点所对应的SQL语句为分别为:
节点A:insert overwrite into A select_a.id,a.name from_a where_a.id<1000;
节点B:insert overwrite into B select_b.id,b.name from_b whereb.address is not null and_b.id<1000;
节点C:insert overwrite into C select ta.id,ta.name,tb.address from Ata.join B tb on ta.id=tb.id;
节点D:insert overwrite into D select_d.id,sum(_d.value)as total_consume from_d group by_d.id;
节点E:insert overwrite into E select tc.id,tc.name,tc.address,td.total_consume from C tc.join D td on tc.id=td.id.
对每一个节点的SQL脚本进行表变量替换,输出如下:
节点A:@_var_A:=select_a.id,a.name from_a where_a.id<1000;
节点B:@_var_B:=select_b.id,b.name from_b where b.address is not nulland_b.id<1000;
节点C:@_var_C:=select ta.id,ta.name,tb.address from@_var_A ta join@_var_B tb on ta.id=tb.id;
节点D:@_var_D:=select_d.id,sum(_d.value)as total_consume from_dgroup by_d.id;
节点E:@_var_E:=select tc.id,tc.name,tc.address,td.total_consumefrom@_var_C tc join@_var_D td on tc.id=td.id;
Insert overwrite into D from@_var_D select*;
根据上下游的关系将上述SQL语句合并到SQL脚本中,然后再将上述脚本提交到支持SQL表变量和变量内联展开的编译器中,生成执行计划,最后提交到大数据处理平台,由大数据处理平台进行执行计划优化和运行。
需要说明的是,在将每一个工作流节点对应的输出表替换为表变量之后,数据处理方法还包括:
在工作流中存在预定工作流节点的情况下,将预定工作流节点对上游节点输出表的依赖转换成预定工作流节点对上游节点替换后的表变量的依赖,其中,预定工作流节点的上游节点为满足合并条件的工作流节点;
和/或,
为在满足合并条件的工作流节点中的最下层节点增加数据输出语句,其中,数据输出语句用于将数据输出到预定结果表中。
在一种可选的实施例中,如果当前节点在工作流中存在上游节点,则除了需要进行输出表到表变量的替换外,还需要将上游节点输出表的依赖转换为对表变量的依赖。如果当前节点B对应的SQL语句中依赖其上游节点A的输出表ta,并且节点A的输出表已经替换为变量@_var_ta,则在节点B对应的SQL语句中所有对ta的引用都将转换成变量@_var_ta。
在另一种可选的实施例中,对于待优化的工作流子图中的最下层节点,除了进行变量替换外,还需要增加数据输出语句,将数据输出到结果表中,例如,SQL语句:
insert into a select b.id,b.name from b where b.company=’aliyun’
是工作流中的最底层节点,则对其进行替换后,得到的结果为:
@_var_a:=select b.id,b.name from b where b.company=’aliyun’;
insert into a from@_var_a select@。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的数据处理方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明实施例,还提供了一种用于实施上述数据处理方法的数据处理装置,如图11所示,该装置包括:确定模块1101、筛选模块1103、合并模块1105以及处理模块1107。
其中,确定模块1101,用于确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点;筛选模块1103,用于从至少两个工作流节点中筛选出满足合并条件的工作流节点;合并模块1105,用于对满足合并条件的工作流节点进行合并,得到合并后的工作流;处理模块1107,用于依据合并后的工作流对数据进行处理。
此处需要说明的是,上述确定模块1101、筛选模块1103、合并模块1105以及处理模块1107对应于上述数据处理方法中的步骤S202至步骤S208,四个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述数据处理方法所公开的内容。
在一种可选的实施例中,筛选模块包括:第一筛选单元。其中,第一筛选单元,用于依据工作流所包括的工作流节点之间的依赖关系,从至少两个工作流节点中筛选出满足合并条件的工作流节点。
在一种可选的实施例中,第一筛选单元包括:第二筛选单元。其中,第二筛选单元,用于依据预定依赖模型,从至少两个工作流节点中筛选出满足合并条件的工作流节点,其中,预定依赖模型用于表征工作流所包括的工作流节点之间的依赖关系。
在一种可选的实施例中,预定依赖模型包括以下至少之一:单依赖模型,其中,单依赖模型表征的工作流节点之间的依赖关系是:工作流节点只有一个子节点;多依赖模型,其中,多依赖模型表征的工作流节点之间的依赖关系是:工作流节点存在多个父节点;跨依赖模型,其中,多依赖模型表征的工作流节点之间的依赖关系是:工作流节点只有一个子节点和一个父节点。
在一种可选的实施例中,合并模块还用于以下至少之一:在预定依赖模型为单依赖模型的情况下,将只有一个子节点的工作流节点和子节点合并为一个节点;在预定依赖模型为多依赖模型的情况下,将存在多个父节点的工作流节点与多个父节点合并为一个节点;在预定依赖模型为跨依赖模型的情况下,将只有一个子节点和一个父节点的工作流节点与子节点合并为一个节点。
在一种可选的实施例中,筛选模块和合并模块还用于:依据单依赖模型,从至少两个工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,工作流变成第一工作流;依据多依赖模型,从第一工作流所包括的工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,第一工作流变成第二工作流;依据跨依赖模型,从第二工作流所包括的工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,第二工作流变成第三工作流。
在一种可选的实施例中,合并模块包括:第一生成单元、第一替换单元以及合并单元。其中,第一生成单元,用于通过语法生成器,将满足合并条件的工作流节点中的每一个工作流节点的脚本生成每一个工作流节点对应的结构化查询语言SQL语句,其中,SQL语句中包括:工作流节点输出表,工作流节点对应的查询子句,和工作流节点依赖的表名;第一替换单元,用于将每一个工作流节点对应的输出表替换为表变量;合并单元,用于依据满足合并条件的工作流节点间上下游关系,将替换为表变量的满足合并条件的工作流节点中的每一个工作流节点的SQL语句合并到一个脚本文件中。
此处需要说明的是,上述第一生成单元、第一替换单元以及合并单元对应于上述数据处理方法中的步骤S602至步骤S606,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述数据处理方法所公开的内容。
在一种可选的实施例中,数据处理装置还包括:转换单元以及增加单元。其中,转换单元,用于在工作流中存在预定工作流节点的情况下,将预定工作流节点对上游节点输出表的依赖转换成预定工作流节点对上游节点替换后的表变量的依赖,其中,预定工作流节点的上游节点为满足合并条件的工作流节点;增加单元,用于为在满足合并条件的工作流节点中的最下层节点增加数据输出语句,其中,数据输出语句用于将数据输出到预定结果表中。
根据本发明实施例,还提供了一种脚本显示方法,如图12所示的一种脚本显示方法的方法流程图,该方法具体包括如下步骤:
步骤S1202,接收用于查看对数据进行处理的脚本的请求;
步骤S1204,根据请求,获取脚本,其中,脚本包括合并脚本,合并脚本为:将用于对数据进行处理的工作流所包括的满足合并条件的工作流节点进行合并后得到的合并工作流节点对应的脚本;
步骤S1206,显示获取的脚本。
在一种可选的实施例中,客户端向大数据处理平台发送查看脚本的请求,大数据处理平台在接收到该请求后,对该请求进行验证,以验证该请求是否合法。在确定请求合法的情况下,在对请求进行解析处理,得到解析后的处理结果,并根据处理结果来获取到所要查看的合并脚本,并将该脚本显示在大数据处理平台上,或者大数据处理平台将合并脚本反馈至客户端,并在客户端的显示界面上显示。
在另一种可选的实施例中,用户通过大数据处理平台的人机交互界面,输入所要查看的脚本的相关信息,该相关信息包含查看对数据进行处理的脚本的请求。人机交互界面接收到用户所输入的相关信息后,将该信息发送给大数据处理平台的后台处理程序,后台处理程序对该信息进行处理,解析得到查看脚本的请求。后台处理程序根据请求获取到与请求相对应的脚本,并将脚本发送至人机交互界面上,用户通过人机交互界面便可查看到用于查看对数据进行处理的脚本。
需要说明的是,可根据优化深度搜索(Depth First Search,简称为DFS)算法对工作流中的每个工作流节点进行遍历,根据遍历的结果来确定工作流中工作流节点与工作流节点之间的依赖关系或传递关系,进而确定工作流中满足合并条件的工作流节点。
基于步骤S1202至步骤S1206所限定的方案,可以获知,通过接收用于查看对数据进行处理的脚本的请求,并根据请求获取脚本,最后显示获取的脚本,其中,脚本包括合并脚本,合并脚本为:将用于对数据进行处理的工作流所包括的满足合并条件的工作流节点进行合并后得到的合并工作流节点对应的脚本。
容易注意到的是,由于是将多个工作流节点进行合并,因此,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用,即减少了中间数据的存储,进而节省了存储成本。
本申请的上述方案可以达到提高复杂的大数据处理工作流的执行效率的目的,从而实现了减少处理流节点过程中中间数据的存储,节省了存储成本的技术效果,进而解决了现有技术中工作流中的各个流节点单独处理,处理效率低的技术问题。
在一种可选的实施例中,如图13所示的一种可选的脚本显示方法的方法流程图,根据请求,获取脚本具体包括如下步骤:
步骤S1302,通过语法生成器,将满足合并条件的工作流节点中的每一个工作流节点的脚本生成每一个工作流节点对应的结构化查询语言SQL语句,其中,SQL语句中包括:工作流节点输出表,工作流节点对应的查询子句,和工作流节点依赖的表名;
步骤S1304,将每一个工作流节点对应的输出表替换为表变量;
步骤S1306,依据满足合并条件的工作流节点间上下游关系,将替换为表变量的满足合并条件的工作流节点中的每一个工作流节点的SQL语句合并得到合并脚本。
需要说明的是,通过语法生成器可将工作流节点的SQL脚本生成语法树。其中,语法生成器是基于语法规则,将原始脚本生成语法树的工具,包括但不限于antlr(AnotherTool for Language Recognition,开源语法分析器)、Yacc(Yet Another CompilerCompiler的简称)。此外,通过语法生成器所生成的语法书的节点的信息至少包括如下之一:当前节点的语法类型以及节点在原始文本(或段落)的对应关系。
具体的,基于语法规则,语法生成器可将SQL语句:insert into a select b.id,b.name from b where b.company=’aliyun’生成如图9所示的语法树,通过语法树可确定工作流节点输出表的名字为a,工作流节点对应的查询子句为:select b.id,b.name fromb where b.company=’aliyun’,工作流节点依赖的表名为b。在得到工作流节点所对应的结构化查询语言SQL语句之后,对工作流节点的输出表进行表变量的替换,并依据工作流节点之间的上下游关系,将工作流节点的SQL语句合并到同一个脚本文件中,从而可使的SQL编译器对SQL脚本进行编译,生成一个大的执行计划,并将其提交到大数据平台进行优化并执行。
根据本发明实施例,还提供了一种用于实施上述脚本显示方法脚本显示方法的脚本显示装置,如图14所示,该装置包括:接收模块1401、获取模块1403以及显示模块1405。
其中,接收模块1401,用于接收用于查看对数据进行处理的脚本的请求;获取模块1403,用于根据请求,获取脚本,其中,脚本包括合并脚本,合并脚本为:将用于对数据进行处理的工作流所包括的满足合并条件的工作流节点进行合并后得到的合并工作流节点对应的脚本;显示模块1405,用于显示获取的脚本。
此处需要说明的是,上述接收模块1401、获取模块1403以及显示模块1405对应于上述脚本显示方法中的步骤S1202至步骤S1206,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述脚本显示方法所公开的内容。
在一种可选的实施例中,获取模块包括:第二生成单元、第二替换单元以及第三替换单元。其中,第二生成单元,用于通过语法生成器,将满足合并条件的工作流节点中的每一个工作流节点的脚本生成每一个工作流节点对应的结构化查询语言SQL语句,其中,SQL语句中包括:工作流节点输出表,工作流节点对应的查询子句,和工作流节点依赖的表名;第二替换单元,用于将每一个工作流节点对应的输出表替换为表变量;第三替换单元,用于依据满足合并条件的工作流节点间上下游关系,将替换为表变量的满足合并条件的工作流节点中的每一个工作流节点的SQL语句合并得到合并脚本。
此处需要说明的是,上述第二生成单元、第二替换单元以及第三替换单元对应于上述脚本显示方法中的步骤S1302至步骤S1306,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述脚本显示方法所公开的内容。
本发明的实施例还可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
图15示出了一种计算机终端的硬件结构框图。如图15所示,计算机终端A可以包括一个或多个(图中采用152a、152b,……,152n来示出)处理器152(处理器152可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器154、以及用于通信功能的传输装置156。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图15所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端A还可包括比图15中所示更多或者更少的组件,或者具有与图15所示不同的配置。
应当注意到的是上述一个或多个处理器152和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端A中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
处理器152可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点;从至少两个工作流节点中筛选出满足合并条件的工作流节点;对满足合并条件的工作流节点进行合并,得到合并后的工作流;依据合并后的工作流对数据进行处理。
存储器154可用于存储应用软件的软件程序以及模块,如本申请实施例中的数据处理方法对应的程序指令/数据存储装置,处理器152通过运行存储在存储器154内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据处理方法。存储器154可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器154可进一步包括相对于处理器152远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置156用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端A的通信供应商提供的无线网络。在一个实例中,传输装置156包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置156可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端A的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图15所示的计算机终端A可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图15仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机终端A中的部件的类型。
在本实施例中,上述计算机终端A可以执行数据处理方法中以下步骤的程序代码:确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点;从至少两个工作流节点中筛选出满足合并条件的工作流节点;对满足合并条件的工作流节点进行合并,得到合并后的工作流;依据合并后的工作流对数据进行处理。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:依据工作流所包括的工作流节点之间的依赖关系,从至少两个工作流节点中筛选出满足合并条件的工作流节点。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:依据预定依赖模型,从至少两个工作流节点中筛选出满足合并条件的工作流节点,其中,预定依赖模型用于表征工作流所包括的工作流节点之间的依赖关系。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在预定依赖模型为单依赖模型的情况下,将只有一个子节点的工作流节点和子节点合并为一个节点;在预定依赖模型为多依赖模型的情况下,将存在多个父节点的工作流节点与多个父节点合并为一个节点;在预定依赖模型为跨依赖模型的情况下,将只有一个子节点和一个父节点的工作流节点与子节点合并为一个节点。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:依据单依赖模型,从至少两个工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,工作流变成第一工作流;依据多依赖模型,从第一工作流所包括的工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,第一工作流变成第二工作流;依据跨依赖模型,从第二工作流所包括的工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,第二工作流变成第三工作流。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:通过语法生成器,将满足合并条件的工作流节点中的每一个工作流节点的脚本生成每一个工作流节点对应的结构化查询语言SQL语句,其中,SQL语句中包括:工作流节点输出表,工作流节点对应的查询子句,和工作流节点依赖的表名;将每一个工作流节点对应的输出表替换为表变量;依据满足合并条件的工作流节点间上下游关系,将替换为表变量的满足合并条件的工作流节点中的每一个工作流节点的SQL语句合并到一个脚本文件中。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在工作流中存在预定工作流节点的情况下,将预定工作流节点对上游节点输出表的依赖转换成预定工作流节点对上游节点替换后的表变量的依赖,其中,预定工作流节点的上游节点为满足合并条件的工作流节点;和/或,为在满足合并条件的工作流节点中的最下层节点增加数据输出语句,其中,数据输出语句用于将数据输出到预定结果表中。
本领域普通技术人员可以理解,图15所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图15其并不对上述电子装置的结构造成限定。例如,计算机终端A还可包括比图15中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图15所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述数据处理方法所提供的数据处理方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点;从至少两个工作流节点中筛选出满足合并条件的工作流节点;对满足合并条件的工作流节点进行合并,得到合并后的工作流;依据合并后的工作流对数据进行处理。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:依据工作流所包括的工作流节点之间的依赖关系,从至少两个工作流节点中筛选出满足合并条件的工作流节点。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:依据预定依赖模型,从至少两个工作流节点中筛选出满足合并条件的工作流节点,其中,预定依赖模型用于表征工作流所包括的工作流节点之间的依赖关系。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在预定依赖模型为单依赖模型的情况下,将只有一个子节点的工作流节点和子节点合并为一个节点;在预定依赖模型为多依赖模型的情况下,将存在多个父节点的工作流节点与多个父节点合并为一个节点;在预定依赖模型为跨依赖模型的情况下,将只有一个子节点和一个父节点的工作流节点与子节点合并为一个节点。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:依据单依赖模型,从至少两个工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,工作流变成第一工作流;依据多依赖模型,从第一工作流所包括的工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,第一工作流变成第二工作流;依据跨依赖模型,从第二工作流所包括的工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,第二工作流变成第三工作流。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:通过语法生成器,将满足合并条件的工作流节点中的每一个工作流节点的脚本生成每一个工作流节点对应的结构化查询语言SQL语句,其中,SQL语句中包括:工作流节点输出表,工作流节点对应的查询子句,和工作流节点依赖的表名;将每一个工作流节点对应的输出表替换为表变量;依据满足合并条件的工作流节点间上下游关系,将替换为表变量的满足合并条件的工作流节点中的每一个工作流节点的SQL语句合并到一个脚本文件中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在工作流中存在预定工作流节点的情况下,将预定工作流节点对上游节点输出表的依赖转换成预定工作流节点对上游节点替换后的表变量的依赖,其中,预定工作流节点的上游节点为满足合并条件的工作流节点;和/或,为在满足合并条件的工作流节点中的最下层节点增加数据输出语句,其中,数据输出语句用于将数据输出到预定结果表中。
本发明的实施例还提供了一种系统。该系统包括处理器和存储器。其中,存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:
确定用于对数据进行处理的工作流,其中,工作流包括至少两个工作流节点;
从至少两个工作流节点中筛选出满足合并条件的工作流节点;
对满足合并条件的工作流节点进行合并,得到合并后的工作流;
依据合并后的工作流对数据进行处理。
由上可知,通过确定用于对数据进行处理的工作流,从至少两个工作流节点中筛选出满足合并条件的工作流节点,并对满足合并条件的工作流节点进行合并,得到合并后的工作流,依据合并后的工作流对数据进行处理,其中,工作流至少包括两个工作流节点。
容易注意到的是,由于是将多个工作流节点进行合并,因此,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用,即减少了中间数据的存储,进而节省了存储成本。
本申请的上述方案可以达到提高复杂的大数据处理工作流的执行效率的目的,从而实现了减少处理流节点过程中中间数据的存储,节省了存储成本的技术效果,进而解决了现有技术中工作流中的各个流节点单独处理,处理效率低的技术问题。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1.一种数据处理方法,其特征在于,包括:
确定用于对数据进行处理的工作流,其中,所述工作流包括至少两个工作流节点;
从所述至少两个工作流节点中筛选出满足合并条件的工作流节点;
对所述满足合并条件的工作流节点进行合并,得到合并后的工作流,其中,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用;
依据所述合并后的工作流对所述数据进行处理;
其中,所述从所述至少两个工作流节点中筛选出满足合并条件的工作流节点,包括:根据所述至少两个工作流节点的入度和/或出度来确定满足合并条件的工作流节点,其中,工作流节点的入度为所述工作流节点所具有的父节点的个数,所述工作流节点的出度,为所述工作流节点所具有的子节点的个数。
2.根据权利要求1所述的方法,其特征在于,从所述至少两个工作流节点中筛选出满足合并条件的工作流节点包括:
依据所述工作流所包括的工作流节点之间的依赖关系,从所述至少两个工作流节点中筛选出满足合并条件的工作流节点。
3.根据权利要求2所述的方法,其特征在于,依据所述工作流所包括的工作流节点之间的依赖关系,从所述至少两个工作流节点中筛选出满足合并条件的工作流节点包括:
依据预定依赖模型,从所述至少两个工作流节点中筛选出满足合并条件的工作流节点,其中,所述预定依赖模型用于表征所述工作流所包括的工作流节点之间的依赖关系。
4.根据权利要求3所述的方法,其特征在于,所述预定依赖模型包括以下至少之一:
单依赖模型,其中,所述单依赖模型表征的工作流节点之间的依赖关系是:所述工作流节点只有一个子节点;
多依赖模型,其中,所述多依赖模型表征的工作流节点之间的依赖关系是:所述工作流节点存在多个父节点;
跨依赖模型,其中,所述跨依赖模型表征的工作流节点之间的依赖关系是:所述工作流节点只有一个子节点和一个父节点。
5.根据权利要求4所述的方法,其特征在于,对所述满足合并条件的工作流节点进行合并,得到所述合并后的工作流包括以下至少之一:
在所述预定依赖模型为所述单依赖模型的情况下,将只有一个子节点的所述工作流节点和所述子节点合并为一个节点;
在所述预定依赖模型为所述多依赖模型的情况下,将存在所述多个父节点的所述工作流节点与所述多个父节点合并为一个节点;
在所述预定依赖模型为所述跨依赖模型的情况下,将只有一个子节点和一个父节点的所述工作流节点与所述子节点合并为一个节点。
6.根据权利要求5所述的方法,其特征在于,从所述至少两个工作流节点中筛选出满足合并条件的工作流节点,以及对所述满足合并条件的工作流节点进行合并,得到所述合并后的工作流包括:
依据所述单依赖模型,从所述至少两个工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,所述工作流变成第一工作流;
依据所述多依赖模型,从所述第一工作流所包括的工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,所述第一工作流变成第二工作流;
依据所述跨依赖模型,从所述第二工作流所包括的工作流节点中筛选出满足合并条件的工作流节点,对筛选出的工作流节点进行合并,其中,所述第二工作流变成第三工作流。
7.根据权利要求1所述的方法,其特征在于,对所述满足合并条件的工作流节点进行合并,得到所述合并后的工作流包括:
通过语法生成器,将所述满足合并条件的工作流节点中的每一个工作流节点的脚本生成每一个工作流节点对应的结构化查询语言SQL语句,其中,所述SQL语句中包括:工作流节点输出表,工作流节点对应的查询子句,和工作流节点依赖的表名;
将每一个工作流节点对应的输出表替换为表变量;
依据满足合并条件的工作流节点间上下游关系,将替换为所述表变量的满足合并条件的工作流节点中的每一个工作流节点的SQL语句合并到一个脚本文件中。
8.根据权利要求7所述的方法,其特征在于,在将每一个工作流节点对应的输出表替换为所述表变量之后,还包括:
在所述工作流中存在预定工作流节点的情况下,将所述预定工作流节点对上游节点输出表的依赖转换成所述预定工作流节点对所述上游节点替换后的表变量的依赖,其中,所述预定工作流节点的上游节点为满足合并条件的工作流节点;
和/或,
为在满足合并条件的工作流节点中的最下层节点增加数据输出语句,其中,所述数据输出语句用于将数据输出到预定结果表中。
9.一种脚本显示方法,其特征在于,包括:
接收用于查看对数据进行处理的脚本的请求;
根据所述请求,获取所述脚本,其中,所述脚本包括合并脚本,所述合并脚本为:将用于对数据进行处理的工作流所包括的满足合并条件的工作流节点进行合并后得到的合并工作流节点对应的脚本,其中,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用;
显示获取的所述脚本;
其中,所述方法包括:根据至少两个工作流节点的入度和/或出度来确定满足合并条件的工作流节点,其中,工作流节点的入度为所述工作流节点所具有的父节点的个数,所述工作流节点的出度为所述工作流节点所具有的子节点的个数。
10.根据权利要求9所述的方法,其特征在于,根据所述请求,获取所述脚本包括:
通过语法生成器,将满足合并条件的工作流节点中的每一个工作流节点的脚本生成每一个工作流节点对应的结构化查询语言SQL语句,其中,所述SQL语句中包括:工作流节点输出表,工作流节点对应的查询子句,和工作流节点依赖的表名;
将每一个工作流节点对应的输出表替换为表变量;
依据满足合并条件的工作流节点间上下游关系,将替换为所述表变量的满足合并条件的工作流节点中的每一个工作流节点的SQL语句合并得到所述合并脚本。
11.一种数据处理装置,其特征在于,包括:
确定模块,用于确定用于对数据进行处理的工作流,其中,所述工作流包括至少两个工作流节点;
筛选模块,用于从所述至少两个工作流节点中筛选出满足合并条件的工作流节点;
合并模块,用于对所述满足合并条件的工作流节点进行合并,得到合并后的工作流,其中,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用;
处理模块,用于依据所述合并后的工作流对所述数据进行处理;
其中,所述筛选模块,还用于根据所述至少两个工作流节点的入度和/或出度来确定满足合并条件的工作流节点,其中,工作流节点的入度为所述工作流节点所具有的父节点的个数,所述工作流节点的出度为所述工作流节点所具有的子节点的个数。
12.一种脚本显示装置,其特征在于,包括:
接收模块,用于接收用于查看对数据进行处理的脚本的请求;
获取模块,用于根据所述请求,获取所述脚本,其中,所述脚本包括合并脚本,所述合并脚本为:将用于对数据进行处理的工作流所包括的满足合并条件的工作流节点进行合并后得到的合并工作流节点对应的脚本,其中,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用,其中,根据至少两个工作流节点的入度和/或出度来确定满足合并条件的工作流节点,其中,工作流节点的入度为所述工作流节点所具有的父节点的个数,所述工作流节点的出度为所述工作流节点所具有的子节点的个数;
显示模块,用于显示获取的所述脚本。
13.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行以下处理步骤:
确定用于对数据进行处理的工作流,其中,所述工作流包括至少两个工作流节点;
从所述至少两个工作流节点中筛选出满足合并条件的工作流节点,其中,根据所述至少两个工作流节点的入度和/或出度来确定满足合并条件的工作流节点,其中,工作流节点的入度为所述工作流节点所具有的父节点的个数,所述工作流节点的出度为所述工作流节点所具有的子节点的个数;
对所述满足合并条件的工作流节点进行合并,得到合并后的工作流,其中,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用;
依据所述合并后的工作流对所述数据进行处理。
14.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行以下处理步骤:
确定用于对数据进行处理的工作流,其中,所述工作流包括至少两个工作流节点;
从所述至少两个工作流节点中筛选出满足合并条件的工作流节点,根据所述至少两个工作流节点的入度和/或出度来确定满足合并条件的工作流节点,其中,工作流节点的入度为所述工作流节点所具有的父节点的个数,所述工作流节点的出度为所述工作流节点所具有的子节点的个数;
对所述满足合并条件的工作流节点进行合并,得到合并后的工作流,其中,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用;
依据所述合并后的工作流对所述数据进行处理。
15.一种数据处理系统,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
确定用于对数据进行处理的工作流,其中,所述工作流包括至少两个工作流节点;
从所述至少两个工作流节点中筛选出满足合并条件的工作流节点,根据所述至少两个工作流节点的入度和/或出度来确定满足合并条件的工作流节点,其中,工作流节点的入度为所述工作流节点所具有的父节点的个数,所述工作流节点的出度为所述工作流节点所具有的子节点的个数;
对所述满足合并条件的工作流节点进行合并,得到合并后的工作流,其中,合并前的工作流节点所产生的数据不会再次被存储,而是直接在合并后的工作流节点内部使用;
依据所述合并后的工作流对所述数据进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711064594.2A CN110019207B (zh) | 2017-11-02 | 2017-11-02 | 数据处理方法和装置以及脚本显示方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711064594.2A CN110019207B (zh) | 2017-11-02 | 2017-11-02 | 数据处理方法和装置以及脚本显示方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019207A CN110019207A (zh) | 2019-07-16 |
CN110019207B true CN110019207B (zh) | 2023-07-21 |
Family
ID=67186757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711064594.2A Active CN110019207B (zh) | 2017-11-02 | 2017-11-02 | 数据处理方法和装置以及脚本显示方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019207B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111224822A (zh) * | 2020-01-03 | 2020-06-02 | 深圳鲲云信息科技有限公司 | 数据流图的节点调度方法、系统、服务器及存储介质 |
CN112506957A (zh) * | 2020-12-18 | 2021-03-16 | 杭州数梦工场科技有限公司 | 工作流依赖关系的确定方法及装置 |
CN113805976B (zh) * | 2021-09-16 | 2024-09-13 | 上海商汤科技开发有限公司 | 数据处理方法及装置、电子设备及计算机可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222110A (zh) * | 2011-06-28 | 2011-10-19 | 用友软件股份有限公司 | 数据处理装置和数据处理方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070021995A1 (en) * | 2005-07-20 | 2007-01-25 | Candemir Toklu | Discovering patterns of executions in business processes |
US8510751B2 (en) * | 2010-03-18 | 2013-08-13 | International Business Machines Corporation | Optimizing workflow engines |
CN102902739B (zh) * | 2012-09-13 | 2015-09-02 | 杭州电子科技大学 | 云计算环境下面向不确定数据源的工作流视图构造方法 |
US9501202B2 (en) * | 2013-03-15 | 2016-11-22 | Palantir Technologies, Inc. | Computer graphical user interface with genomic workflow |
CN104199831B (zh) * | 2014-07-31 | 2017-10-24 | 深圳市腾讯计算机系统有限公司 | 信息处理方法及装置 |
US9317575B1 (en) * | 2015-05-20 | 2016-04-19 | Atlassian Pty Ltd. | Systems and methods for synchronizing data |
CN106355301A (zh) * | 2015-07-13 | 2017-01-25 | 阿里巴巴集团控股有限公司 | 用于确定工作流模板的方法及设备 |
-
2017
- 2017-11-02 CN CN201711064594.2A patent/CN110019207B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222110A (zh) * | 2011-06-28 | 2011-10-19 | 用友软件股份有限公司 | 数据处理装置和数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110019207A (zh) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984712B (zh) | 基于业务场景的造数方法、设备及可读存储介质 | |
CA3050159C (en) | Artificial intelligence (ai) based automatic rule generation | |
CN109614102A (zh) | 代码自动生成方法、装置、电子设备及存储介质 | |
US10310828B2 (en) | System and method for providing and executing a domain-specific language for cloud services infrastructure | |
US20150095365A1 (en) | Query building using schema | |
US20120054301A1 (en) | Methods and systems for providing a virtual network process context for network participant processes in a networked business process | |
CN110019207B (zh) | 数据处理方法和装置以及脚本显示方法和装置 | |
US20130097592A1 (en) | User selected flow graph modification | |
CN113052696B (zh) | 金融业务任务处理方法、装置、计算机设备和存储介质 | |
Brodsky et al. | Process analytics formalism for decision guidance in sustainable manufacturing | |
US9240965B2 (en) | Methods and systems for business interaction monitoring for networked business process | |
CN106484488B (zh) | 一体化云编译方法和系统 | |
CN114064601B (zh) | 存储过程转换方法、装置、设备和存储介质 | |
CN112965710A (zh) | 计算图的处理方法、装置和系统 | |
CN111767217A (zh) | Js单元测试案例生成方法及装置 | |
US10505873B2 (en) | Streamlining end-to-end flow of business-to-business integration processes | |
Monahov et al. | Design and prototypical implementation of a language empowering business users to define key performance indicators for enterprise architecture management | |
US20140095118A1 (en) | Concise modeling and architecture optimization | |
Xia et al. | A model-driven approach for evaluating system of systems | |
US8448143B2 (en) | System and method for message choreographies of services | |
CN112130849B (zh) | 代码自动生成方法及装置 | |
Lu et al. | Zen-CC: An automated and incremental conformance checking solution to support interactive product configuration | |
Grangel et al. | Transformation of decisional models into UML: application to GRAI grids | |
CN108304219B (zh) | 二次开发平台及方法 | |
US8869122B2 (en) | Extensible executable modeling |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40010867 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |