CN110471652B - 任务编排方法、编排器、设备及可读存储介质 - Google Patents

任务编排方法、编排器、设备及可读存储介质 Download PDF

Info

Publication number
CN110471652B
CN110471652B CN201910705348.3A CN201910705348A CN110471652B CN 110471652 B CN110471652 B CN 110471652B CN 201910705348 A CN201910705348 A CN 201910705348A CN 110471652 B CN110471652 B CN 110471652B
Authority
CN
China
Prior art keywords
task
data
data partition
script
target table
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
Application number
CN201910705348.3A
Other languages
English (en)
Other versions
CN110471652A (zh
Inventor
高翅
李一凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microfun Inc
Original Assignee
Microfun Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microfun Inc filed Critical Microfun Inc
Priority to CN201910705348.3A priority Critical patent/CN110471652B/zh
Publication of CN110471652A publication Critical patent/CN110471652A/zh
Priority to US16/695,483 priority patent/US11385898B2/en
Application granted granted Critical
Publication of CN110471652B publication Critical patent/CN110471652B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供一种任务编排方法、编排器、设备及可读存储介质。本发明的方法,通过将各任务脚本编辑为描述性语言脚本,根据所述任务的描述性语言脚本,自动生成所述任务脚本对应任务中源表和目标表之间的数据依赖关系;根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行,无需技术人员手动编辑工作流文件,在某些任务发生变化时,也可以根据任务脚本自动更新任务中源表和目标表之间的数据依赖关系,不会影响任务之间的编排流程,无需重新进行任务编排测试,提高了任务编排效率。

Description

任务编排方法、编排器、设备及可读存储介质
技术领域
本发明涉及大数据技术领域,尤其涉及一种任务编排方法、编排器、设备及可读存储介质。
背景技术
在大数据平台上,最重要的环节就是对收集来的原始数据做处理,包括清洗、整理、分类、汇总等。绝大多数情况下,这些环节不可能一步完成。例如原始数据本身就有各种来源,每个来源的格式不同、需要的预处理也不同。因此,大数据平台的数据处理方式一般称为“管线”(pipeline),一般通过使用一种程序或服务来安排管线中的各个环节定时执行、或者按照一个流程先后执行,这种程序或服务一般叫做调度器(scheduler),或编排器(orchestrator),管线中的每个环节称为任务(task)。
目前通过工作流的方式实现任务的编排,技术人员预先编写能够表述管线中各个任务间依赖关系的工作流文件,编排器根据工作流文件按照该依赖关系安排任务有序执行。常见的编排器包括Oozie和Luigi等,其中Oozie中有一个Eclipse插件,可以用来对工作流做可视化编辑;Luigi没有可视化编辑器,使用纯代码的方式来定义工作流。
但是,无论是纯代码还是可视化编辑的方式编辑的工作流,都是由技术人员手动定义工作流,如果中间某些任务发生变化,比如原来一个任务重写为多个任务、或者多个任务合并成一个任务、或者新加入一些任务,都需要技术人员手动对工作流进行重新编辑或调整,不可避免地会因人工操作失误导致工作流存在错误,需要对新的工作流重新进行测试,工作流的编辑和测试耗费大量的时间,任务编排的效率低。
发明内容
本发明提供一种任务编排方法、编排器、设备及可读存储介质,用以解决现有技术中由技术人员手动定义工作流,如果中间某些任务发生变化,需要技术人员手动对工作流进行重新编辑或调整,不可避免地会因人工操作失误导致工作流存在错误,需要对新的工作流重新进行测试,工作流的编辑和测试耗费大量的时间和资源,任务编排的效率低的问题。
本发明的一个方面是提供一种任务编排方法,包括:
获取任务脚本,所述任务脚本为描述性语言脚本;
根据所述任务脚本,自动生成所述任务脚本对应任务中源表和目标表之间的数据依赖关系;
根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行。
本发明的另一个方面是提供一种编排器,包括:
任务脚本获取模块,用于获取任务脚本,所述任务脚本为描述性语言脚本;
依赖关系生成模块,用于根据所述任务脚本,自动生成所述任务脚本对应任务中源表和目标表之间的数据依赖关系;
任务驱动模块,用于根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行。
本发明的另一个方面是提供一种任务编排设备,包括:
处理器,存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序;其中,所述处理器运行所述计算机程序时实现上述所述的任务编排方法。
本发明的另一个方面是提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的任务编排方法。
本发明提供的任务编排方法、编排器、设备及可读存储介质,通过将各任务脚本编辑为描述性语言脚本,根据所述任务的描述性语言脚本,自动生成所述任务脚本对应任务中源表和目标表之间的数据依赖关系;根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行,无需技术人员手动编辑工作流文件,在某些任务发生变化时,也可以根据任务脚本自动更新任务中源表和目标表之间的数据依赖关系,不会影响任务之间的编排流程,无需重新进行任务编排测试,提高了任务编排效率。
附图说明
图1为本发明实施例一提供的任务编排方法流程图;
图2为本发明实施例二提供的任务编排方法流程图;
图3为本发明实施例二提供的一种自依赖关系的示意图;
图4为本发明实施例二提供的一种多路依赖关系的示意图;
图5为本发明实施例三提供的编排器的结构示意图;
图6为本发明实施例五提供的任务编排设备的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本发明所涉及的术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
本发明具体应用于大数据平台中的编排器进行任务编排,技术人员预先编辑各任务的描述性语言脚本,例如SQL脚本、或者Pig脚本等与SQL类似的描述性语言脚本;编排器根据各任务的描述性语言脚本,自动生成各任务中源表和目标表之间的数据依赖关系;其中源表是指任务的输入数据表,目标表是指任务的输出数据表,也就是执行任务导致数据发生变化的数据表;然后采用数据驱动的方式,触发各任务的执行。例如,当作为任务的输入数据的源表数据分区中的数据发生变化时,触发任务的执行;任务执行导致目标表中数据分区的数据发生变化;这个目标表的数据分区又会作为下一个任务的源表数据分区,这样会继续触发下一个任务的执行。
下面以具体的实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
图1为本发明实施例一提供的任务编排方法流程图。本发明实施例针对现有技术中由技术人员手动定义工作流,如果中间某些任务发生变化,需要技术人员手动对工作流进行重新编辑或调整,不可避免地会因人工操作失误导致工作流存在错误,需要对新的工作流重新进行测试,工作流的编辑和测试耗费大量的时间和资源,任务编排的效率低的问题,提供了任务编排方法。
本实施例中的方法应用于编排器,该编排器可以安装于大数据平台中的服务器上,在其他实施例中,该方法还可应用于其他设备,本实施例以编排器为例进行示意性说明。
如图1所示,该方法具体步骤如下:
步骤S101、获取任务脚本,任务脚本为描述性语言脚本。
目前已有编排器一般都支持多种任务类型,例如在Hadoop大数据平台上经常用到的HIVE、MapReduce、Pig等计算框架,以及普通的Shell、Java、Data Copy任务等。但是从日常应用情况来看,绝大多数任务是HIVE这种基于SQL语言的处理任务,SQL语言也是数据处理方面最通用的语言。因此,数据处理的核心流程可以只由SQL语言、或类似的描述性语言(例如Pig)构成。
本实施例中,预先编辑各任务的描述性语言脚本。例如,SQL脚本、或者Pig脚本等与SQL类似的描述性语言脚本。
具体的,对于SQL类任务,可以直接编辑该任务的SQL脚本。任务本身的业务逻辑就定义了任务的输入和输出。
对于非SQL类任务,只能采用非SQL语言编写程序的,例如MapReduce任务,或者Java、Shell程序等,将这些数据处理逻辑的程序嵌入到SQL脚本中,作为SQL脚本中的函数、数据序列化/反序列化器,然后通过在SQL脚本调用这些函数来定义这个非SQL类任务,而不会单独编辑非SQL类任务的脚本。这样,各个任务脚本都被编辑为SQL脚本。
示例性的,本实施例中的任务脚本可以由技术人员手动编写和上传值编排器设备。
步骤S102、根据任务脚本,自动生成任务脚本对应任务中源表和目标表之间的数据依赖关系。
本实施例中,任务的描述性语言脚本可以通过语法分析器生成对应的语法树,根据任务脚本的语法树,可以确定任务所涉及的源表和目标表,以及任务的输入数据所涉及的源表的数据分区,任务的输出数据所涉及的目标表的数据分区;进一步都可以确定源表的数据分区与目标表的数据分区之间的数据依赖关系。
步骤S103、根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行。
本实施例中,并不是采用定义工作流的方式编排任务,而是采用数据驱动的方式触发各个任务的执行,实现任务编排。
对于每个任务来说,任务的源表的数据分区中的数据发生变化时,说明任务的输入数据已经准备好,触发任务的执行;任务的执行导致目标表中数据分区的数据发生变化,这个目标表的数据分区又会作为下一个任务的源表的数据分区,这样可以继续触发下一个任务的执行。
本实施例中,在生成所有任务的源表的数据分区与目标表的数据分区之间的数据依赖关系之后,所有任务的源表的数据分区与目标表的数据分区之间的数据依赖关系可以形成一个数据驱动的触发链。这个触发链的源头是原始数据,原始数据到位后,触发第一级任务的执行,第一级任务的执行导致目标表的数据分区的数据发生变化,触发第二级任务的执行,因此类推,完成任务编排和执行。
示例性的,对于第一级任务的触发,可以采用外部触发方式。编排器可以提供一个用于上传原始数据的上传服务,当原始数据上传完毕后,触发第一级任务的执行。
可选的,可以是通过对指定目录中原始数据的监控,当原始数据完整存储到指定目录后,或者监控到指定目录中的原始数据发生变化时,触发第一级任务的执行;或者,可以将原始数据上传到指定数据表,通过监控指定数据表的数据变化来触发第一级任务的执行;或者,在原始数据上传完成之后,直接向编排器发送第一级任务触发信号,编排器接收到该触发信号之后,触发第一级任务的执行,等等。
本发明实施例通过将各任务脚本编辑为描述性语言脚本,根据任务的描述性语言脚本,自动生成任务中源表和目标表之间的数据依赖关系;根据任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行,无需技术人员手动编辑工作流文件,在某些任务发生变化时,也可以根据任务脚本自动更新任务中源表和目标表之间的数据依赖关系,不会影响任务之间的编排流程,无需重新进行任务编排测试,提高了任务编排效率。
实施例二
图2为本发明实施例二提供的任务编排方法流程图。在上述实施例一的基础上,本实施例中,根据任务脚本,自动生成任务中源表和目标表之间的数据依赖关系,包括:从任务脚本的语法树中提取出作为对应任务的输入数据的源表的数据分区,以及作为对应任务的输出数据的目标表的数据分区,目标表的数据分区依赖于源表的数据分区;根据语法树,生成基于中间变量的源表的数据分区与目标表的数据分区之间的数据依赖关系。如图2所示,该方法具体步骤如下:
步骤S201、获取任务脚本,任务脚本为描述性语言脚本。
本实施例中,预先编辑各任务的描述性语言脚本。例如,SQL脚本、或者Pig脚本等与SQL类似的描述性语言脚本。
具体的,对于SQL类任务,可以直接编辑该任务的SQL脚本。任务本身的业务逻辑就定义了任务的输入和输出。
对于非SQL类任务,只能采用非SQL语言编写程序的,例如MapReduce任务,或者Java、Shell程序等,将这些数据处理逻辑的程序嵌入到SQL脚本中,作为SQL脚本中的函数、数据序列化/反序列化器,然后通过在SQL脚本调用这些函数来定义这个非SQL类任务,而不会单独编辑非SQL类任务的脚本。这样,各个任务脚本都被编辑为SQL脚本。
示例性的,本实施例中的任务脚本可以由技术人员手动编写和上传值编排器设备。
本实施例中,通过如下步骤S202-S204,根据任务脚本,自动生成任务中源表和目标表之间的数据依赖关系。
步骤S202、根据任务脚本,通过语法分析器,生成该任务脚本的语法树。
本实施例中,根据任务脚本生成该任务脚本的语法树,可以采用现有技术中任意一种语法分析器实现,本实施例此处不再赘述。
步骤S203、从任务脚本的语法树中提取出作为任务的输入数据的源表的数据分区,以及作为任务的输出数据的目标表的数据分区,目标表的数据分区依赖于源表的数据分区。
任务的描述性语言脚本,例如SQL脚本,其业务逻辑本身就定义了任务的输入和输出对应的数据表,这类任务本身就非常适合自动编排。可以确定任务的源表和目标表,作为任务的输入数据的源表的数据分区,以及作为任务的输出数据的目标表的数据分区。由于数据表一般都很大,每次任务都是根据参数限定只处理其中的一部分数据,因此需要确定到底读取源表中的哪些数据分区的数据和更改目标表中的哪些数据分区的数据。
例如,对于如下表1中的SQL脚本,任务的输入是from的表data0,输出则是insert(其他SQL脚本中也可能是update)的表data1。
表1
Figure BDA0002151898250000071
表1中所示的SQL脚本,把表data0中“date_sub(‘${hivevar:date}’,5)”到“${hivevar:date}”这几天的数据读出来,计算其中每个独立的user_id出现的次数,并将结果写入data1这张表中“${hivevar:date}”这天的数据分区中。其中,date_sub(date,y)表示从日期date减去指定的时间间隔y,“date_sub(‘${hivevar:date}’,5)”也可以写成“${hivevar:date}–5”。
例如,我们给定参数“${hivevar:date}”为2019-01-01的话,表1所示SQL脚本变成表2所示的SQL脚本:
表2
Figure BDA0002151898250000081
表2中“date_sub(‘2019-01-01’,5)”也就是2018-12-27,表2中的SQL脚本还可以表示为表3所示的SQL脚本:
表3
Figure BDA0002151898250000082
步骤S204、根据语法树,生成基于中间变量的源表的数据分区与目标表的数据分区之间的数据依赖关系。
基于表1所示的SQL脚本,通过对该SQL脚本对应语法树,可以确定该任务的源表为data0,目标表为data1,目标表data1依赖于源表data0;源表data0中被依赖的数据分区是“date between date_sub(‘${hivevar:date}’,5)and‘${hivevar:date}’”;目标表data1中被影响的数据分区是“date=‘${hivevar:date}’”。因此,对于源表data0的任意一个数据分区date=D0,和目标表data1的任意一个数据分区date=D1,可以得出源表的数据分区和目标表的数据分区之间具有如下依赖关系,该依赖关系基于中间变量“${hivevar:date}”:
D0between date_sub(‘${hivevar:date}’,5)and‘${hivevar:date}’
该依赖关系可以转换为:
D0>=‘${hivevar:date}’-5and D0<=‘${hivevar:date}’
进一步可以转换为:
D0+5>=‘${hivevar:date}’and D0<=‘${hivevar:date}’
进一步可以转换为:
‘${hivevar:date}’>=D0and‘${hivevar:date}’<=D0+5。
本实施例中,根据基于中间变量的源表的数据分区与目标表的数据分区之间的数据依赖关系,源表的数据分区与中间变量可以是一对一的关系,也可以是一对多的关系。
例如,对于D0=‘${hivevar:date}’,则数据分区date=D1对应于一个中间变量的取值;也就是‘${hivevar:date}’的取值。对于D0>=‘${hivevar:date}’-1and D0<=‘${hivevar:date}’,则数据分区date=D1对应于两个中间变量的取值;也就是‘${hivevar:date}’-1和‘${hivevar:date}’这两个取值。
另外,有些情况下,存在源表的数据分区对应无限多个中间变量的取值。例如,具有临界点的半开区间的依赖关系,比如D0<=‘${hivevar:date},等等。
作为可选的步骤,在生成基于中间变量的源表的数据分区与目标表的数据分区之间的数据依赖关系之后,还可以消掉中间变量,生成源表的数据分区与目标表的数据分区之间的直接数据依赖关系。
基于表1所示的SQL脚本,将D1=‘${hivevar:date}’,代入上述步骤S204中转换得到的依赖关系,消掉中间变量“${hivevar:date}”,得到源表的数据分区和目标表的数据分区之间的直接数据依赖关系:
D1>=D0 and D1<=date_add(D0,5)
或者,D0>=date_sub(D1,5)and D0<=D1。
那么,对data0中‘2018-12-27’这个数据分区的数据,有:
D1>=‘2018-12-27’and D1<=‘2019-01-01’
也就是data1中date=‘2018-12-27’~‘2019-01-01’这几个数据分区的数据都与其相关,如果data0中2018-12-27一天的数据新出现或者发生变化,data1中相应2018-12-27~2019-01-01这几天的数据都需要新计算或更新。
进一步的,当需要增加新的任务时,用户可以上传新增加的目标任务的任务脚本。对于新增加的目标任务的任务脚本,采用上述步骤S202-S205的方式,生成目标任务中源表和目标表之间的数据依赖关系。
在添加一个新任务时,开发人员只需要上传任务的SQL脚本,编排器就会自动检测到这个任务脚本,分析该任务中的数据依赖关系,并在需要的时候自动触发该任务的执行。
进一步的,用户还可以随时更新任务的任务脚本。当任一任务的任务脚本的更新后,采用上述步骤S202-S204的方式,更新该任务中源表和目标表之间的数据依赖关系。
在更新一个已有任务时,开发人员只要修改该任务的SQL脚本,编排器就会自动检测到这个任务脚本发生更新,重新分析该任务中的数据依赖关系,并在需要的时候自动触发该任务的执行。
另外,若任务中不存在任何源表和目标表之间的数据依赖关系,则该任务与其他任务没有数据依赖关系,可以以任何顺序执行。
可选的,对于不存在任何源表和目标表之间的数据依赖关系的任务,编排器可以将这种任务进行显示,由技术人员指定该任务的上游任务和下游任务,从而确定该任务的执行顺序。其中,任务的上游任务是指在该任务之前执行的任务,下游任务是指在该任务之后执行的任务。上游任务执行完成后触发该任务执行,该任务执行完成后,触发下游任务的执行。
步骤S205、根据任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行。
本实施例中,并不是采用定义工作流的方式编排任务,而是采用数据驱动的方式触发各个任务的执行,实现任务编排。
对于每个任务来说,任务的源表的数据分区中的数据发生变化时,说明任务的输入数据已经准备好,触发任务的执行;任务的执行导致目标表中数据分区的数据发生变化,这个目标表的数据分区又会作为下一个任务的源表的数据分区,这样可以继续触发下一个任务的执行。
本实施例中,任务的目标表可以有一个或者多个,每个目标表可以对应一个或者多个数据分区。任务的源表也可以有一个或者多个,每个源表可以对应一个或者多个被依赖的数据分区。源表的数据分区的数据发生变化,是指源表中被依赖的至少一个数据分区的数据发生变化。
本实施例中,通过数据驱动的方式,驱动任务的执行,具体可以采用如下方式实现:
定时扫描数据库中的数据分区,对于扫描到的当前数据分区,确定当前数据分区的关联任务,以及所述关联任务的目标表的数据分区,其中所述关联任务是以当前数据分区作为源表的数据分区的任务;根据所述当前数据分区的更新时间和所述关联任务的目标表的数据分区的更新时间,触发所述关联任务的执行。
可选的,可以实时检测各个数据分区的数据是否发生变化,当检测到某一数据分区的数据发生变化时,将该数据分区作为当前数据分区,确定当前数据分区的关联任务,以及所述关联任务的目标表的数据分区,其中所述关联任务是以当前数据分区作为源表的数据分区的任务;根据所述当前数据分区的更新时间和所述关联任务的目标表的数据分区的更新时间,触发所述关联任务的执行。
具体的,根据所述当前数据分区的更新时间和所述关联任务的目标表的数据分区的更新时间,触发所述关联任务的执行,包括:
判断所述当前数据分区的更新时间是否晚于所述关联任务的至少一个目标表的数据分区的更新时间;若所述当前数据分区的更新时间晚于所述关联任务的至少一个目标表的数据分区的更新时间,则触发所述关联任务的执行;若所述当前数据分区的更新时间不晚于所述关联任务的任意一个目标表的数据分区的更新时间,则不触发所述关联任务的执行。
进一步的,若所述当前数据分区的更新时间晚于所述关联任务的至少一个目标表的数据分区的更新时间,则在触发所述关联任务的执行之前,还包括:判断所述当前数据分区是否同时是所述关联任务的目标表的数据分区;若所述当前数据分区同时是所述关联任务的目标表的数据分区,则不触发执行所述关联任务。
若所述当前数据分区不是所述关联任务的目标表的数据分区,且所述关联任务的源表只有一个,则触发执行所述关联任务。
若所述当前数据分区不是所述关联任务的目标表的数据分区,且所述关联任务有多个源表,则判断是否存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表;若存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表,则不触发执行所述任务;若不存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表,则触发执行所述任务。
具体的,若所述当前数据分区同时是所述关联任务的目标表的数据分区,则说明当前数据分区所属源表是关联任务的一个目标表,则说明源表存在自依赖关系,忽略自依赖关系,不触发执行任务。
例如,如图3所示的依赖关系,表data0是任务的源表,表data1既是任务的源表,也是任务的目标表,表data1存在自依赖关系,这种情况下,通常作为该任务输入数据的表data1的数据分区,与作为该任务的输出数据的表data1的数据分区,是data1中的不同数据分区;这种情况下data1一般是某种累积表,每次将data0中的新数据累积进data1中,因此,源表data1中数据分区的数据发生变化不触发任务的执行,data0中数据分区的数据发生变化才触发任务的执行。
另外,所述当前数据分区同时是所述关联任务的目标表的数据分区,则说明当前数据分区所属源表是关联任务的一个目标表,如果作为该任务输入数据的该源表的数据分区与作为该任务输出数据的该目标表的数据分区有相同的数据分区,则确定存在循环依赖关系,编排器可以报错,以使技术人员核实该任务的脚本,做出相应调整。
进一步的,当前数据分区不是所述关联任务的目标表的数据分区,也就是前数据分区所属源表不是关联任务的目标表,如果关联任务的源表只有一个,则触发执行所述关联任务。
当前数据分区不是所述关联任务的目标表的数据分区,也就是前数据分区所属源表不是关联任务的目标表,如果关联任务有多个源表,则判断是否存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表;若存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表,则说明存在多路依赖的依赖关系,不触发执行所述任务。
例如,如图4所示的数据依赖关系,如果表data0数据分区的数据发生变化,会触发任务1,如果同时也触发任务2,这种情况下,若表data1中还没有数据,那么data2因为到data1的依赖不满足,任务2不执行,不会出错。但是,对于data0更新的情况,表data1中已经有了上次的数据,此时,若表data0数据分区的数据发生变化,触发任务1同时也触发任务2,那么,由表data0直接触发的任务2执行是一次浪费,因为很快任务1执行会使得表data1的数据分区的数据更新,而导致任务2又被触发执行一遍。因此,本实施例中,在表data0数据分区的数据发生变化,触发任务2执行之前,编排器可以确定任务2的另一源表data1直接依赖于表data0,这时,不触发执行任务2。
可选的,对于这种存储多路依赖的情况,可以通过对各个数据表之间的数据依赖关系进行拓扑排序,对各个数据表之间的数据依赖关系进行优化,可以消除其中的多路依赖的情况。
另外,如果任务的任意一个源表的数据分区中数据缺失,则不触发该任务的执行。基于业务的需要,一般目标表引用源表的日期范围都是向过去引用,因此定义这种数据分区引用的情况下,源表中所有被依赖数据分区内的数据齐全才触发执行对应任务。
例如,该步骤上述举例中源表data0中2018-12-27的数据变化并不直接触发目标表data1中2019-01-01的数据计算更新,因为根据依赖关系:D1>=D0 and D1<=date_add(D0,5),目标表data1中2019-01-01的数据一共有如下依赖:D0>=2018-12-27and D0<=2019-01-01;而目前如果只有data0中2018-12-27的数据,2018-12-28~2019-01-01之间的这些数据还不存在,则不会触发计算data1中2019-01-01的数据的任务。
本实施例中,在生成基于中间变量的源表的数据分区与目标表的数据分区之间的数据依赖关系之后,基于中间变量的源表的数据分区与目标表的数据分区之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行。
具体的,根据中间变量的取值和任务脚本,针对中间变量的每个取值和任务脚本,创建一个任务实例,触发执行该任务实例。
另外,对于任务中源表的数据分区对应无限多个中间变量的取值的情况,那么,该源表的数据分区的数据更新不触发任务的执行;或者,根据实际业务逻辑,针对其中部分有限中间变量的取值,创建任务实例并触发任务实例的执行。
例如,对于具有临界点的半开区间的依赖关系,可以根据实际业务逻辑,在临界点对应数据分区的数据发生变化时,才触发任务的执行。
可选的,同时作为大数据平台数据的最终流向,生成数据报表的任务也可以集成进来,当数据报表依赖的数据表变化时,触发自动生成数据报表的任务,或者自动发送报表邮件任务等。
本发明实施例通过将各任务脚本编辑为描述性语言脚本,根据任务的描述性语言脚本,自动生成任务脚本对应任务中源表和目标表之间的数据依赖关系;根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行,无需技术人员手动编辑工作流文件,在某些任务发生变化时,也可以根据任务脚本自动更新任务中源表和目标表之间的数据依赖关系,不会影响任务之间的编排流程,无需重新进行任务编排测试,提高了任务编排效率。
实施例三
图5为本发明实施例三提供的编排器的结构示意图。本发明实施例提供的编排器可以执行任务编排方法实施例提供的处理流程。如图5所示,该编排器30包括:任务脚本获取模块301,依赖关系生成模块302和任务驱动模块303。
具体的,任务脚本获取模块301用于获取任务脚本,任务脚本为描述性语言脚本。
依赖关系生成模块302用于根据任务脚本,自动生成任务脚本对应任务中源表和目标表之间的数据依赖关系。
任务驱动模块303用于根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行。
本发明实施例提供的装置可以具体用于执行上述实施例一所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过将各任务脚本编辑为描述性语言脚本,根据任务的描述性语言脚本,自动生成任务脚本对应任务中源表和目标表之间的数据依赖关系;根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行,无需技术人员手动编辑工作流文件,在某些任务发生变化时,也可以根据任务脚本自动更新任务中源表和目标表之间的数据依赖关系,不会影响任务之间的编排流程,无需重新进行任务编排测试,提高了任务编排效率。
实施例四
在上述实施例三的基础上,本实施例中,编排器的依赖关系生成模块还用于:
从所述任务脚本的语法树中提取出作为对应任务的输入数据的源表的数据分区,以及作为对应任务的输出数据的目标表的数据分区,所述目标表的数据分区依赖于所述源表的数据分区;根据所述语法树,生成基于中间变量的所述源表的数据分区与所述目标表的数据分区之间的数据依赖关系。
可选的,任务驱动模块还用于:
定时扫描数据库中的数据分区,对于扫描到的当前数据分区,确定当前数据分区的关联任务,以及所述关联任务的目标表的数据分区,其中所述关联任务是以当前数据分区作为源表的数据分区的任务;根据所述当前数据分区的更新时间和所述关联任务的目标表的数据分区的更新时间,触发所述关联任务的执行。
可选的,任务驱动模块还用于:
判断所述当前数据分区的更新时间是否晚于所述关联任务的至少一个目标表的数据分区的更新时间;若所述当前数据分区的更新时间晚于所述关联任务的至少一个目标表的数据分区的更新时间,则触发所述关联任务的执行;若所述当前数据分区的更新时间不晚于所述关联任务的任意一个目标表的数据分区的更新时间,则不触发所述关联任务的执行。
可选的,任务驱动模块还用于:
若所述当前数据分区的更新时间晚于所述关联任务的至少一个目标表的数据分区的更新时间,则判断所述当前数据分区是否同时是所述关联任务的目标表的数据分区;若所述当前数据分区同时是所述关联任务的目标表的数据分区,则不触发执行所述关联任务;若所述当前数据分区不是所述关联任务的目标表的数据分区,且所述关联任务的源表只有一个,则触发执行所述关联任务。
可选的,任务驱动模块还用于:
若所述当前数据分区不是所述关联任务的目标表的数据分区,且所述关联任务有多个源表,则判断是否存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表;若存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表,则不触发执行所述任务;若不存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表,则触发执行所述任务。
可选的,依赖关系生成模块还用于:
对各个数据表之间的数据依赖关系进行拓扑排序。
可选的,依赖关系生成模块还用于:
对于新增加的目标任务的任务脚本,生成目标任务中源表和目标表之间的数据依赖关系。
可选的,依赖关系生成模块还用于:
当任一任务的任务脚本的更新后,更新该任务中源表和目标表之间的数据依赖关系。
本发明实施例提供的装置可以具体用于执行上述实施例二所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过将各任务脚本编辑为描述性语言脚本,根据任务的描述性语言脚本,自动生成任务脚本对应任务中源表和目标表之间的数据依赖关系;根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行,无需技术人员手动编辑工作流文件,在某些任务发生变化时,也可以根据任务脚本自动更新任务中源表和目标表之间的数据依赖关系,不会影响任务之间的编排流程,无需重新进行任务编排测试,提高了任务编排效率。
实施例五
图6为本发明实施例五提供的任务编排设备的结构示意图。如图6所示,该任务编排设备70包括:处理器701,存储器702,以及存储在存储器702上并可在处理器701上运行的计算机程序;
其中,处理器701运行计算机程序时实现上述任一方法实施例提供的任务编排方法。
本发明实施例通过将各任务脚本编辑为描述性语言脚本,根据任务的描述性语言脚本,自动生成任务脚本任务中源表和目标表之间的数据依赖关系;根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行,无需技术人员手动编辑工作流文件,在某些任务发生变化时,也可以根据任务脚本自动更新任务中源表和目标表之间的数据依赖关系,不会影响任务之间的编排流程,无需重新进行任务编排测试,提高了任务编排效率。
另外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法实施例提供的任务编排方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。

Claims (11)

1.一种任务编排方法,其特征在于,包括:
获取任务脚本,所述任务脚本为描述性语言脚本;
根据所述任务脚本,自动生成所述任务脚本对应任务中源表和目标表之间的数据依赖关系;
根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行;
所述根据所述任务脚本,自动生成所述任务脚本对应任务中源表和目标表之间的数据依赖关系,包括:
从所述任务脚本的语法树中提取出作为对应任务的输入数据的源表的数据分区,以及作为对应任务的输出数据的目标表的数据分区,所述目标表的数据分区依赖于所述源表的数据分区;
根据所述语法树,生成基于中间变量的所述源表的数据分区与所述目标表的数据分区之间的数据依赖关系。
2.根据权利要求1所述的方法,其特征在于,所述根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行,包括:
定时扫描数据库中的数据分区,对于扫描到的当前数据分区,确定当前数据分区的关联任务,以及所述关联任务的目标表的数据分区,其中所述关联任务是以当前数据分区作为源表的数据分区的任务;
根据所述当前数据分区的更新时间和所述关联任务的目标表的数据分区的更新时间,触发所述关联任务的执行。
3.根据权利要求2所述的方法,其特征在于,所述根据所述当前数据分区的更新时间和所述关联任务的目标表的数据分区的更新时间,触发所述关联任务的执行,包括:
判断所述当前数据分区的更新时间是否晚于所述关联任务的至少一个目标表的数据分区的更新时间;
若所述当前数据分区的更新时间晚于所述关联任务的至少一个目标表的数据分区的更新时间,则触发所述关联任务的执行;
若所述当前数据分区的更新时间不晚于所述关联任务的任意一个目标表的数据分区的更新时间,则不触发所述关联任务的执行。
4.根据权利要求3所述的方法,其特征在于,所述若所述当前数据分区的更新时间晚于所述关联任务的至少一个目标表的数据分区的更新时间,则触发所述关联任务的执行,包括:
若所述当前数据分区的更新时间晚于所述关联任务的至少一个目标表的数据分区的更新时间,则判断所述当前数据分区是否同时是所述关联任务的目标表的数据分区;
若所述当前数据分区同时是所述关联任务的目标表的数据分区,则不触发执行所述关联任务;
若所述当前数据分区不是所述关联任务的目标表的数据分区,且所述关联任务的源表只有一个,则触发执行所述关联任务。
5.根据权利要求4所述的方法,其特征在于,所述判断所述当前数据分区是否同时是所述关联任务的目标表的数据分区之后,还包括:
若所述当前数据分区不是所述关联任务的目标表的数据分区,且所述关联任务有多个源表,则判断是否存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表;
若存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表,则不触发执行所述任务;
若不存在所述关联任务的其他源表直接或者间接地依赖于所述当前数据分区所属的源表,则触发执行所述任务。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述根据所述任务脚本,自动生成所述任务脚本对应任务中源表和目标表之间的数据依赖关系之后,还包括:
对各个数据表之间的数据依赖关系进行拓扑排序。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述根据所述任务脚本,自动生成所述任务中源表和目标表之间的数据依赖关系之后,还包括:
对于新增加的目标任务的任务脚本,生成所述目标任务中源表和目标表之间的数据依赖关系。
8.根据权利要求1至5中任一项所述的方法,其特征在于,所述根据所述任务脚本,自动生成所述任务中源表和目标表之间的数据依赖关系之后,还包括:
当任一任务的任务脚本的更新后,更新该任务中源表和目标表之间的数据依赖关系。
9.一种编排器,其特征在于,包括:
任务脚本获取模块,用于获取任务脚本,所述任务脚本为描述性语言脚本;
依赖关系生成模块,用于根据所述任务脚本,自动生成所述任务脚本对应任务中源表和目标表之间的数据依赖关系;
任务驱动模块,用于根据各任务中源表和目标表之间的数据依赖关系,通过数据驱动的方式,驱动任务的执行;
所述依赖关系生成模块,还用于:
从所述任务脚本的语法树中提取出作为对应任务的输入数据的源表的数据分区,以及作为对应任务的输出数据的目标表的数据分区,所述目标表的数据分区依赖于所述源表的数据分区;根据所述语法树,生成基于中间变量的所述源表的数据分区与所述目标表的数据分区之间的数据依赖关系。
10.一种任务编排设备,其特征在于,包括:
处理器,存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序;
其中,所述处理器运行所述计算机程序时实现如权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的方法。
CN201910705348.3A 2019-08-01 2019-08-01 任务编排方法、编排器、设备及可读存储介质 Active CN110471652B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910705348.3A CN110471652B (zh) 2019-08-01 2019-08-01 任务编排方法、编排器、设备及可读存储介质
US16/695,483 US11385898B2 (en) 2019-08-01 2019-11-26 Task orchestration method for data processing, orchestrator, device and readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910705348.3A CN110471652B (zh) 2019-08-01 2019-08-01 任务编排方法、编排器、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN110471652A CN110471652A (zh) 2019-11-19
CN110471652B true CN110471652B (zh) 2023-04-07

Family

ID=68508501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910705348.3A Active CN110471652B (zh) 2019-08-01 2019-08-01 任务编排方法、编排器、设备及可读存储介质

Country Status (2)

Country Link
US (1) US11385898B2 (zh)
CN (1) CN110471652B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176718A (zh) * 2019-12-24 2020-05-19 中国平安财产保险股份有限公司 脚本上线方法、装置、存储介质及电子设备
CN111159270A (zh) * 2019-12-31 2020-05-15 杭州依图医疗技术有限公司 一种调度Zeppelin任务的方法、系统、计算设备及存储介质
CN111258813A (zh) * 2020-01-13 2020-06-09 北京点众科技股份有限公司 一种报表数据自动恢复的方法和设备
CN111651460A (zh) * 2020-06-11 2020-09-11 上海德易车信息科技有限公司 一种数据治理方法、装置、电子设备及可读存储介质
CN113420097B (zh) * 2021-06-23 2023-05-30 网易(杭州)网络有限公司 一种数据分析方法、装置、存储介质及服务器
CN113709229A (zh) * 2021-08-24 2021-11-26 德清阿尔法创新研究院 一种数据驱动的智能物联网平台工作流实现系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014670A (en) * 1997-11-07 2000-01-11 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US9171102B1 (en) * 2013-02-22 2015-10-27 Ca, Inc. Topological sorting of cyclic directed graphs
CN109634587A (zh) * 2018-12-04 2019-04-16 上海碳蓝网络科技有限公司 一种生成入库脚本以及数据入库的方法和设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014670A (en) * 1997-11-07 2000-01-11 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US9171102B1 (en) * 2013-02-22 2015-10-27 Ca, Inc. Topological sorting of cyclic directed graphs
CN109634587A (zh) * 2018-12-04 2019-04-16 上海碳蓝网络科技有限公司 一种生成入库脚本以及数据入库的方法和设备

Also Published As

Publication number Publication date
US11385898B2 (en) 2022-07-12
CN110471652A (zh) 2019-11-19
US20210034365A1 (en) 2021-02-04

Similar Documents

Publication Publication Date Title
CN110471652B (zh) 任务编排方法、编排器、设备及可读存储介质
US20230065572A1 (en) System and method for performing automated api tests
CN106909510B (zh) 一种获取测试用例的方法以及服务器
US8930337B2 (en) Mapping dataset elements
US20180253296A1 (en) Software kit release management
CN108763091B (zh) 用于回归测试的方法、装置及系统
CN107111545B (zh) 一种用于生成计算机可执行图的方法及系统
CN107250988B (zh) 应用程序测试
CN106293891B (zh) 多维投资指标监督方法
CN110019116B (zh) 数据追溯方法、装置、数据处理设备及计算机存储介质
CN110837496A (zh) 一种基于动态sql实现的数据质量管理方法及系统
CN110765010A (zh) 基于Flink的可视化开发在线调试方法及装置
CN113760677A (zh) 异常链路分析方法、装置、设备及存储介质
US11119899B2 (en) Determining potential test actions
Lin et al. Empirical Evidence on Developer's Commit Activity for Open-Source Software Projects.
CN117235527A (zh) 端到端容器化的大数据模型构建方法、装置、设备及介质
CN113867714B (zh) 一种适配多语言的自动代码生成方法
CN116016270A (zh) 一种交换机测试管理方法、装置、电子设备和存储介质
CN112130849B (zh) 代码自动生成方法及装置
CN109033196A (zh) 一种分布式数据调度系统及方法
Hoffmann et al. Planning@ sap: An application in business process management
CN111949525A (zh) 基于ai的健壮性智能测试系统及其测试方法
US20230266965A1 (en) Software development environment
CN111208993B (zh) 一种流程化数据分析处理系统
CN117950711A (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
GR01 Patent grant
GR01 Patent grant