CN110781079A - 数据处理流程调试方法、装置及电子设备 - Google Patents
数据处理流程调试方法、装置及电子设备 Download PDFInfo
- Publication number
- CN110781079A CN110781079A CN201910948438.5A CN201910948438A CN110781079A CN 110781079 A CN110781079 A CN 110781079A CN 201910948438 A CN201910948438 A CN 201910948438A CN 110781079 A CN110781079 A CN 110781079A
- Authority
- CN
- China
- Prior art keywords
- data
- debugging
- job
- processing flow
- characteristic information
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种数据处理流程调试方法、装置及电子设备,涉及数据调试技术领域,该方法包括:获取所述数据处理流程的作业信息,所述作业信息包括作业特征信息和从输入数据到输出数据之间的处理逻辑;根据所述作业特征信息,确定与所述作业特征信息相匹配的离线调试数据;按照所述处理逻辑对所述离线调试数据进行处理,得到所述数据处理流程的调试输出数据。由于调试的输入数据是离线数据,从而可以实现对数据处理流程的离线调试,避免干扰线上运行环境以及挤占线上作业的资源。
Description
技术领域
本发明涉及作业调试技术领域,尤其是涉及一种数据处理流程调试方法、装置及电子设备。
背景技术
在数据爆发增长的时代,对数据进行处理的优劣,直接影响使用该数据得到的分析结论的准确性。实时流处理作为一种数据处理流程,以能够高效的实现数据清洗、统计、入库为目的。例如,基于Flink的处理流程,其中,Flink是一种常用的数据实时流数据处理的框架。
以基于Flink SQL的处理流程为例,该Flink SQL包括SQL算子,在应用Flink SQL对实时流数据进行处理之前,需要对基于Flink SQL执行的数据处理流程进行调试,以验证Flink SQL中SQL算子的语法、处理逻辑是否正确。目前的调试是线上试运行一段时间,根据试运行期间的数据处理结果进行调试。但是,该试运行期间的数据处理结果是基于在线的真实数据源得到的,该试运行期间会干扰线上运行环境,还会挤占线上作业的资源。
发明内容
有鉴于此,本发明提供了一种数据处理流程调试方法、装置及电子设备,以解决线上试运行会干扰线上运行环境,还会挤占线上作业的资源的技术问题。
第一方面,本发明提供了一种数据处理流程调试方法,获取所述数据处理流程的作业信息,所述作业信息包括作业特征信息和从输入数据到输出数据之间的处理逻辑;根据所述作业特征信息,确定与所述作业特征信息相匹配的离线调试数据;按照所述处理逻辑对所述离线调试数据进行处理,得到所述数据处理流程的调试输出数据。
第二方面,本发明提供了一种数据处理流程调试装置,该装置包括:获取单元,用于获取所述数据处理流程的作业信息,所述作业信息包括作业特征信息和从输入数据到输出数据之间的处理逻辑;确定单元,用于根据所述作业特征信息,确定与所述作业特征信息相匹配的离线调试数据;处理单元,用于按照所述处理逻辑对所述离线调试数据进行处理,得到所述数据处理流程的调试输出数据。
第三方面,本发明提供的一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现如上所述的数据处理流程调试方法。
第四方面,本发明提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现如上所述的数据处理流程调试方法。
通过本发明实施例提供的上述数据处理流程调试方法、装置及电子设备,根据作业特征信息,选择相匹配的离线调试数据,并对该离线调试数据按照数据处理流程的处理逻辑进行处理,得到调试输出数据。由于调试针对的是离线数据,从而可以实现对处理逻辑的离线调试,避免干扰线上运行环境或挤占线上作业的资源。
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据处理流程调试方法的流程示意图;
图2为本发明实施例提供的另一种数据处理流程调试方法的流程示意图;
图3为本发明实施例提供的一种数据处理流程调试装置的结构示意图;
图4为本发明实施例提供的一种的电子设备的结构示意图。
具体实施方式
下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,数据处理流程的调试是在线上试运行一段时间,根据试运行期间的数据处理结果进行调试。数据处理流程以基于Flink SQL的处理流程为例,其线上运行环境可以是,从分布式消息分发***Kafka读取数据,通过SQL算子对读取的数据进行运算,最后将计算结果写入到搜素引擎Elasticsearch。Flink SQL的处理流程的调试也需要在线上运行环境中进行,这样会干扰线上运行环境,还会挤占线上作业的资源,例如网络带宽等。
基于此,本发明实施例提供的一种数据处理流程调试方法、装置及电子设备,可以实现对数据处理流程的离线调试,避免干扰线上运行环境以及挤占线上作业的资源。
图1为本发明实施例提供的一种数据处理流程调试方法的流程示意图。如图1所示,该方法包括以下步骤:
步骤S110,获取数据处理流程的作业信息,该作业信息包括作业特征信息和从输入数据到输出数据之间的处理逻辑。
一个数据处理流程可以包括一个或多个作业,每个作业可以对应有业务逻辑和一条或多条作业特征信息,该业务逻辑通过从输入数据到输出数据之间的处理逻辑来实现。以基于Flink的处理流程为例,Flink作为一个流计算框架,在执行Flink作业时,可以将Flink作业组织成Flink所能接受的程序结构,所以需要获取该基于Flink的处理流程对应的Flink作业信息。
需要说明的是,作业是用户在数据处理流程包括的一次计算过程中或一个事务处理中要求电子设备所做的工作的集合。作业可以包括程序和数据,还可以包括作业说明书。电子设备可以基于作业说明书、程序和数据进行工作。例如,该作业可以为求学生的总人数、求年龄的最大值和最小值、求年龄总和或者求年龄的平均值等等。
步骤S120,根据作业特征信息,确定与作业特征信息相匹配的离线调试数据。
在本发明实施例中,每个作业可以对应一个或多个数据源,每一作业对应的离线调试数据可以是该作业的数据源的模拟数据,也可以是该作业的数据源的历史数据。例如,可以采样该作业的数据源指定时间段内的数据,作为该作业的离线调试数据,该指定时间段可以根据实际需要确定。
在一些实施例中,每个作业的一条或多条作业特征信息可以包括该作业的数据源的属性信息,该属性信息可以包括:作业ID、数据对应表名和数据格式。
对于每个作业的离线调试数据,可以与该作业特征信息对应存储,以便通过该作业特征信息获取该作业的离线调试数据。
步骤S130,按照处理逻辑对离线调试数据进行处理,得到数据处理流程的调试输出数据。
由于离线调试数据是已知的,所以基于该离线调试数据得到的调试输出数据也应该是符合预期的,可以根据该调试输出数据是否符合预期作为判断处理逻辑是否合理的依据。
本发明实施例,根据作业特征信息,选择相匹配的离线调试数据,并对该离线调试数据按照数据处理流程的处理逻辑进行处理,得到调试输出数据。由于调试针对的是离线数据,从而可以实现对处理逻辑的离线调试,避免干扰线上运行环境或挤占线上作业的资源。
在一些实施例中,可以将不同作业的离线调试数据存储在不同的路径下。
作为一个示例,上述步骤S120具体可以包括如下步骤:
步骤1),根据作业特征信息,确定与作业特征信息相匹配的第一存储路径;
步骤2),根据第一存储路径,获取离线调试数据。
对于上述步骤1)和步骤2),可以预先建立各个作业的离线调试数据的存储路径与各个作业的作业特征信息之间的对应关系;基于该对应关系,根据当前数据处理流程包括的一个或多个作业中每个作业的作业特征信息,可以分别匹配到各自的第一存储路径,获取该一个或多个第一存储路径下的离线调试数据来调试该当前数据处理流程,需要说明的是,不同的作业匹配到的第一存储路径可以相同也可以不同。例如,每个作业的一条或多条作业特征信息可以包括该作业的数据源的属性信息,该数据源的属性信息包含在作业信息中,该属性信息可以包括作业ID、数据对应表名和数据格式等。其中,该数据格式可以为数据存储格式,例如,数据格式可以为JSON(JavaScript Object Notation,JS对象简谱)或者CSV(Comma-Separated Values,字符分隔值)等。例如,建立的对应关系可以如下表1所示。当数据处理流程包括两个作业,分别记为第一作业、第二作业时,则可以根据第一作业的作业特征信息c和作业特征信息a,匹配到存储路径n(即,上述第一存储路径);以及根据第二作业的作业特征信息c和作业特性信息b匹配到存储路径m(即,上述第一存储路径),例如,该作业特性信息c可以为第一数据格式,该作业特征信息a可以为第一数据对应表名,该作业特征信息b为第二数据对应表名。
表1
对于上述步骤1)和步骤2),第一存储路径的节点可以根据作业特征信息来命名,根据当前数据处理流程的作业特征信息,可以匹配到由节点名构成的第一存储路径。例如,第一作业特征信息对应第一节点,第二作业特征信息对应第二节点,第三作业特性信息对应第三节点,根据第一作业的第三作业特征信息和第一作业特征信息可以匹配得到的路径为“第三节点/第一节点/”;根据第二作业的第三作业特征信息和第二作业特征信息可以匹配得到的路径为“第三节点/第二节点/”。例如,可以通过作业ID、数据对应表名和数据格式等数据源的属性信息来命名的节点,例如,最终匹配到的第一存储路径可以为“数据格式/数据对应表名/作业ID/”、“第一作业ID/”或者“第二作业ID/”等。
作为另一个示例,该第一存储路径可以作为作业特征信息,并将该第一存储路径记录在作业信息里,在调试过程中,可以直接获取该作业信息中记录的第一存储路径中的离线调试数据。例如,该第一存储路径可以包括,作业ID、数据对应表名和数据格式等命名的节点,该作业特征信息可以为“数据格式/数据对应表名/作业ID/”。另外,还可以按照预设规则,根据第一存储路径生成作业特征信息,将该作业特征信息记录在作业信息中,例如,该第一存储路径为“数据格式/数据对应表名/作业ID/”,生成的作业特征信息可以为“数据格式-数据对应表名-作业ID”;在调试过程中,可以先根据作业特征信息生成第一存储路径,然后获取该第一存储路径中的离线调试数据。
另外,与作业特征信息相匹配的第一存储路径可以存储有不同作业的离线调试数据,由于数据源和离线调试数据均对应有属性信息,可以根据属性信息进行区分。基于此,上述步骤2)还可以包括如下步骤:根据第一存储路径,确定与数据源的属性信息相匹配的离线调试数据。
在一些实施例中,可以直接根据属性信息进行区分。基于此,上述步骤S120具体可以包括如下步骤:确定与数据源的属性信息相匹配的离线调试数据。
其中,按照数据源的属性信息选择的离线调试数据,符合业务对输入数据的需求。
在一些实施例中,该离线调试数据为JSON文件或者CSV文件,该JSON文件或者CSV文件的文件名包括属性信息。示例性的,该文件的名称可以为“作业ID-数据对应表名-数据格式.log”,其中,“.log”是指日志文件。
根据以上规则,便可以根据不同的数据源,定位到相应的离线调试数据。从而起到替代真实数据源的效果。由于读取的是离线调试数据,不用干扰线上生产环境,挤占线上作业资源,网络带宽等。
在一些实施例中,上述处理逻辑包括,输入数据的结构定义、输出数据的结构定义以及至少一个算子。通过算子或算子的组合运算,以及输入数据的结构定义和输出数据的结构定义,可以实现上述从输入数据到输出数据之间的处理逻辑。
在进行调试之前,需要从离线调试数据中选择符合输入数据的结构定义的离线调试数据,从而使离线调试数据可以代替线上的真实数据源。
例如,在数据处理流程中,输入数据的结构可以是表结构,将输入数据按照处理逻辑进行处理后,得到的输出数据的结构也可以是表结构。该表结构可以预先分别进行定义。
再例如,以基于Flink的数据处理流程为例,上述输入数据的结构定义包括对Source表结构的定义、对输入内存数据库的定义、或者,对输入关系型数据库的定义等等;上述输出数据的结构定义包括对Sink表结构的定义、对输出内存数据库的定义、或者,对输出关系型数据库的定义等等;上述算子为Flink SQL算子。
其中,source是指Flink SQL作业的输入,通常采用表结构,可以定义为TableSource(输入表);Sink是指Flink SQL作业的输出,同样采用表结构,可以定义为TableSink(输出表);SQL算子是采用SQL语句编写的处理逻辑。因此,TableSource、SQL算子和TableSink可以构成了一个Flink SQL作业。通过对Flink SQL作业进行调试,可以将TableSink输出到内存中,从而很容易实现Flink的Retract(撤回)机制和Upsert(更新***)机制。Retract是指对输出的旧数据进行删除,然后再***新的数据;Upsert是指基于数据中预先定义好的主键,对旧数据进行删除,然后再***新的数据。
如果离线调试数据是按照Flink SQL作业Source表结构输入的,通过调试就可以验证源表表结构与Flink SQL的语义是否契合,各字段类型是否正确等。
在一些实施例中,可以直接将该调试的输出数据进行展示,以便调试人员基于展示的信息判断该离线调试数据得到的调试输出数据是否符合预期。
在一些实施例中,可以对调试的数据进行分析得到调试结果。该调试结果可以用于评价该数据处理流程是否合格。作为一个示例,该方法还可以包括如下步骤:
步骤i),确定调试输出数据与选择的离线调试数据对应的期望输出数据的差异;
步骤j),如果差异符合预期差异,确定的调试结果为处理逻辑不合格;
步骤k),如果差值不符合预期差异,确定的调试结果为处理逻辑合格。
其中,期望输出数据,可以预先根据离线调试数据确定。该期望数据可以为经过验证的正确的输出数据。
例如,在根据调试的输出数据确定调试结果时,可以将每条调试的输入数据对应的调试的输出数据与该条调试的输入数据对应的期望输出数据进行对比,根据上述对比得到的差值可以确定处理逻辑是否合格。示例性的,可以设置一个阈值,如果该差值大于阈值,确定的调试结果为处理逻辑不合格;如果该差值小于阈值,确定的调试结果为处理逻辑合格。需要说明的是,在调试之前,可以预先获取选择的离线调试数据对应的期望输出数据。
再例如,对于统计点击次数的作业,基于离线调试数据中包含的点击事件,可以确定的期望输出为点击p次,以及预先确定预期差异e,其中,每一点击事件为该离线调试数据中的一行数据。基于离线调试数据进行调试后,得到的调试输出数据为q,确定该p和q的差值的绝对值,如果判断该差值的绝对值小于e,处理逻辑合格;如果判断该差值的绝对值大于e,处理逻辑不合格。
另外,由于调试的输入数据是按照数据处理流程的输入数据的结构定义输入的,因此,通过调试结果可以验证输入数据的结构定义与处理逻辑的语义是否契合、各字段类型是否正确等。
通过本发明实施例提供的上述方法,采用离线调试数据模拟线上的真实数据源数据,从离线调试数据中选择符合数据处理流程的输入数据的结构定义的离线调试数据,将选择的离线调试数据作为调试的输入数据,该调试的输入数据符合数据处理流程的输入数据的结构定义,因此,可以代替线上的真实数据源,对数据处理流程进行离线调试,避免干扰线上运行环境以及挤占线上作业的资源,例如网络带宽等。
另外,离线调试相对于线上调试,部署流程比较简单,因为在线上调试过程中,通常需要频繁上下线,非常耗费人力,而离线调试则不存在该问题,节省人力。并且,线上采用真实数据源进行调试,会使得真正进行线上生产运行时,很难将真实数据源回退到调试之前的状态,而由于离线调试使用的是离线调试数据则不会干扰线上的真实数据源。
在一些实施例中,在对调试的输入数据进行上述处理逻辑处理时,可以以本地离线方式对调试的输入数据进行处理逻辑处理,即,可以将调试作业部署在一个设备上进行调试。由于,在线上运行环境通常是多个设备协作运行的,在线上进行测试时,则也需要在该多个设备上进行部署,相对于该种线上将调试作业部署在多个设备上的调试方式,本发明实施例的调试方法部署更加简单。
在一些实施例中,在本地离线执行时,可以设置调试作业的并行度为1,从而简化调试实现过程。以基于Flink的数据处理流程为例,该Flink作业允许输入和输出,即Source和Sink可以设置并行度,并行读取数据源中数据和并行写出数据到数据源。因为并行操作之间的协调问题,导致一般而言并行操作程序要比单线程程序更加复杂,因此为了简化调试,所以设置整个作业的并行度为1,即Flink SQL作业的整个环节都是单线程操作。在实现时,Flink的执行环境提供了设置该参数的接口,因此直接调用API即可实现。但由于Flink并行度设置的优先级设计,我们在输入和输出端这个两个环节特别显式的设置输入和输出的并行度为1。
线上运行作业,涉及到作业的上线、启停操作,这两个操作可能是非常耗费资源的。例如,一旦在线上运行,将对真实的数据进行了消费,那如果作业是不符合预期结果的,停止作业以后,修改作业逻辑,再次上线,如何确保能够从上次消费的位置进行消费,比如说Kafka这种数据源,一旦消费了真实数据,重新开始消费就需要更换消费组ID;再例如,上次上线运行的不符合预期结果的数据,已经产生到外部数据源了,清理工作如果无法保证,这样就会污染数据源;再例如,一旦上线作业,势必会干扰线上运行的其他作业(资源争抢等),这些都是不利点。
本申请实施例所述的调试方法可以在数据处理流程编写完成以后,在未上线之前进行调试,该调试运行时机可以由使用者决定。本申请实施例在作业正式上线以前,提供给作业编写者一个工具,辅助编写者验证作业的逻辑和输入输出是否符合预期结果,并且能够快速运行出结果,帮助作业编写者一步步调整作业逻辑,直至达到最终效果,通过本文所述离线调试方法,就可以在作业上线前,避免逻辑问题的存在,将作业可能存在的问题暴露在上线前,从而避免作业仓促上线所带来的诸多问题。
另外,上述数据处理流程调试方法可以设置为:每一次调试启动时,清空旧的调试数据,这样,每一次调试结果始终是新的。
图2为本发明实施例提供的另一种数据处理流程调试方法流程示意图。如图2所示,数据处理流程包括多个作业,基于图1所示的实施例,在调试过程中,该方法还可以执行以下步骤:
步骤S201,将每一作业的调试输出数据存储在内存中。
可以将调试的输出数据累积存储在内存中某个数据结构中,该数据结构是根据数据处理流程的输出数据结构进行设置的。由于离线调试数据是有限的,因此调试的输出数据也是有限的,不会占用太多内存。
通过内存模拟外部数据输出存储源,可以避免对外部数据输出存储源造成污染。同时,内存中用于存储调试的输出数据的数据结构与数据处理流程的输出数据结构相同,因此,可以验证输出数据结构与处理逻辑的语义是否契合、各字段类型是否正确。
另外,在内存模式下,可以保存调试的输出数据的数据类型等信息,这样,无论是对数据的更新或者对旧数据的删除,都比较方便。
步骤S202,对于每一作业,在确定调试结束指令后,将该作业在内存中的调试输出数据,在与该作业的作业特征信息相匹配的第二存储路径中,存储为调试结果文件。
在调试时,针对离线调试数据的每一行数据可以依次获取,并作为调试的输入数据进行处理,将每行数据对应的计算结果累积在该作业对应的输出数据结构中。直到任务结束时,将全部计算结果持久化到调试结果文件中。由于内存只能短暂存储数据,因此,在调试结束后,将内存中的调试的输出数据存储到对应于数据处理流程的本地文件中,固定存放在某个路径下。并且,与离线调试数据的存储类似,该调试结果文件的文件名可以包括该作业的作业特征信息,该调试结果文件为SON文件或者CSV文件。
在实际应用中,不同作业的输出数据的结构并不一致,因此,本发明实施例可以在调试结束时,统一规整化调试的输出数据。比如第一种作业的调试的输出数据是3个字段,第二种作业的调试的输出数据是2个字段,这样在输出时,输出数据的结构并不一致,所以将每一条调试的输出数据转为一条记录,以设定数据格式(例如JSON或者CSV)存储到文件的一行中。即每一条调试的输出数据单独作为一行存储。
需要说明的是,线上的真实数据源为实时流数据,当线上进行调试时,数据源是源源不断的,使得调试程序不会自动结束,需要人为干预,才能取消或者结束调试任务。而本发明实施例的离线调试数据是有限的,当得到全部选择的离线调试数据对应的调试的输出数据时,调试结束,即可自动结束调试任务;并且,由于离线调试数据相较于真实数据源,数据量比较少,因此,离线调试可以较快处理完毕,达到快速执行的效果。另外,还可以在从本地文件中把所有数据读取完毕以后,将数据源进行关闭,并告知数据源的载体任务结束。
示例性的,上述步骤S130可以包括:
步骤m),依次将离线调试数据的每一行数据作为输入数据按照处理逻辑进行处理;
步骤n),当确定将离线调试数据的最后一行数据作为输入数据后,生成调试结束指令。
对于上述步骤m)和步骤n),从文件中读取调试数据(即模拟的真实数据)的方式为逐行读取,当读取到最后一行后,可以判断出已经读取完毕所有数据,此时会执行关闭资源操作,执行关闭操作后,输入作为Flink中的头部环节,Flink会检测到输入关闭,此时会执行作业结束操作。
图3为本发明实施例提供的一种数据处理流程调试装置的结构示意图。该装置包括:
获取单元301,用于获取所述数据处理流程的作业信息,所述作业信息包括作业特征信息和从输入数据到输出数据之间的处理逻辑;
确定单元302,用于根据所述作业特征信息,确定与所述作业特征信息相匹配的离线调试数据;
处理单元303,用于按照所述处理逻辑对所述离线调试数据进行处理,得到所述数据处理流程的调试输出数据。
在一些实施例中,确定单元302具体用于:
根据所述作业特征信息,确定与所述作业特征信息相匹配的第一存储路径;
根据所述第一存储路径,获取所述离线调试数据。
在一些实施例中,所述作业对应有数据源,所述作业特征信息包括所述数据源的属性信息;
确定单元302还用于:
根据所述第一存储路径,确定与所述数据源的属性信息相匹配的离线调试数据。
在一些实施例中,上述属性信息包括:作业ID、数据对应表名和数据格式。
在一些实施例中,上述离线调试数据为JSON文件或者CSV文件,所述JSON文件或者CSV文件的文件名包括所述属性信息。
在一些实施例中,所述数据处理流程包括多个作业,该装置还包括:
存储单元,用于将每一作业的调试输出数据存储在内存中;对于每一作业,在确定调试结束指令后,将该作业在内存中的调试输出数据,在与该作业的作业特征信息相匹配的第二存储路径中存储为调试结果文件,该调试结果文件的文件名包括该作业的作业特征信息,该调试结果文件为SON文件或者CSV文件。
在一些实施例中,所述离线调试数据包括多行;处理单元303具体用于:
依次将所述离线调试数据的每一行数据作为输入数据按照所述处理逻辑进行处理;
当确定将所述离线调试数据的最后一行数据作为输入数据后,生成调试结束指令。
在一些实施例中,还包括:
展示单元,用于展示所述调试的输出数据。
在一些实施例中,调试结果确定单元,用于:
确定所述调试的输出数据与所述选择的离线调试数据对应的期望输出数据的差异;
如果所述差异符合预期差异,确定的调试结果为所述处理逻辑不合格;
如果所述差值不符合预期差异,确定的调试结果为所述处理逻辑合格。
在一些实施例中,所述处理逻辑包括,输入数据的结构定义、输出数据的结构定义以及从输入数据到输出数据的至少一个算子。
在一些实施例中,所述输入数据的结构定义包括对Source表结构的定义、对输入内存数据库的定义、或者,对输入关系型数据库的定义;所述输出数据的结构定义包括对Sink表结构的定义、对输出内存数据库的定义、或者,对输出关系型数据库的定义;所述算子为Flink SQL算子。
参见图4,本发明实施例还提供一种电子设备400,包括:处理器401,存储器402,总线403和通信接口404,处理器401、通信接口404和存储器402通过总线403连接;存储器402用于存储程序;处理器401用于通过总线403调用存储在存储器402中的程序,执行上述实施例的数据处理流程调试方法。
其中,存储器402可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口404(可以是有线或者无线)实现该***网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线403可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器402用于存储程序,处理器401在接收到执行指令后,执行程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器401中,或者由处理器401实现。
处理器401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器401可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器402,处理器401读取存储器402中的信息,结合其硬件完成上述方法的步骤。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现本发明实施例提供的上述数据处理流程调试方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
最后应说明的是:以上所述实施例,仅为本发明的具体实施例,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。
Claims (13)
1.一种数据处理流程调试方法,其特征在于,包括:
获取所述数据处理流程的作业信息,所述作业信息包括作业特征信息和从输入数据到输出数据之间的处理逻辑;
根据所述作业特征信息,确定与所述作业特征信息相匹配的离线调试数据;
按照所述处理逻辑对所述离线调试数据进行处理,得到所述数据处理流程的调试输出数据。
2.根据权利要求1所述的方法,其特征在于,根据所述作业特征信息,确定与所述作业特征信息相匹配的离线调试数据的步骤,包括:
根据所述作业特征信息,确定与所述作业特征信息相匹配的第一存储路径;
根据所述第一存储路径,获取所述离线调试数据。
3.根据权利要求2所述的方法,其特征在于,所述数据处理流程包括一个或多个作业,每个所述作业对应一条或多条作业特征信息,每个所述作业对应有数据源,每个所述作业对应的一条或多条作业特征信息包括该作业对应的数据源的属性信息。
4.根据权利要求3所述的方法,其特征在于,所述属性信息包括:作业ID、数据对应表名和数据格式。
5.根据权利要求4所述的方法,其特征在于,所述数据处理流程包括至少一个作业,所述方法还包括:
将每一作业的调试输出数据存储在内存中;
对于每一作业,在确定调试结束指令后,将该作业在内存中的调试输出数据,在与该作业的作业特征信息相匹配的第二存储路径中存储为调试结果文件,该调试结果文件的文件名包括该作业的作业特征信息。
6.根据权利要求5所述的方法,其特征在于,当所述离线调试数据包括多行时,则按照所述处理逻辑对所述离线调试数据进行处理的步骤包括:
依次将所述离线调试数据的每一行数据作为输入数据按照所述处理逻辑进行处理;
当确定将所述离线调试数据的最后一行数据作为输入数据后,生成调试结束指令。
7.根据权利要求1所述的方法,其特征在于,还包括:
展示所述调试的输出数据。
8.根据权利要求1-7任意一项所述的方法,其特征在于,所述处理逻辑包括,输入数据的结构定义、输出数据的结构定义以及从输入数据到输出数据的至少一个处理算子。
9.根据权利要求8所述的方法,其特征在于,
所述输入数据的结构定义包括对Source表结构的定义、对输入内存数据库的定义、或者对输入关系型数据库的定义;
所述输出数据的结构定义包括对Sink表结构的定义、对输出内存数据库的定义、或者对输出关系型数据库的定义;
所述处理算子为Flink SQL算子。
10.根据权利要求1所述的方法,其特征在于,所述调试方法在所述数据处理流程编写完成后,在未上线之前执行。
11.一种数据处理流程调试装置,其特征在于,包括:
获取单元,用于获取所述数据处理流程的作业信息,所述作业信息包括作业特征信息和从输入数据到输出数据之间的处理逻辑;
确定单元,用于根据所述作业特征信息,确定与所述作业特征信息相匹配的离线调试数据;
处理单元,用于按照所述处理逻辑对所述离线调试数据进行处理,得到所述数据处理流程的调试输出数据。
12.一种电子设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1-10任一项所述的方法。
13.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910948438.5A CN110781079B (zh) | 2019-10-08 | 2019-10-08 | 数据处理流程调试方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910948438.5A CN110781079B (zh) | 2019-10-08 | 2019-10-08 | 数据处理流程调试方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110781079A true CN110781079A (zh) | 2020-02-11 |
CN110781079B CN110781079B (zh) | 2022-08-09 |
Family
ID=69385160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910948438.5A Active CN110781079B (zh) | 2019-10-08 | 2019-10-08 | 数据处理流程调试方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110781079B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010512A (zh) * | 2021-02-24 | 2021-06-22 | 上海中通吉网络技术有限公司 | 基于Flink的实时数据处理方法、平台和设备 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002229814A (ja) * | 2001-02-02 | 2002-08-16 | Hitachi Ltd | デバッグ方法及び情報処理システム |
CN101615159A (zh) * | 2009-07-31 | 2009-12-30 | 中兴通讯股份有限公司 | 离线测试***及其本地数据管理方法及相应的装置 |
WO2011039570A1 (en) * | 2009-09-30 | 2011-04-07 | Freescale Semiconductor, Inc. | Distributed debug system |
US20130191815A1 (en) * | 2012-01-23 | 2013-07-25 | Microsoft Corporation | Tsql debug breakpoint interoperability across heterogeneous projects |
CN106201887A (zh) * | 2016-07-18 | 2016-12-07 | 合网络技术(北京)有限公司 | 一种离线数据任务的验证方法及装置 |
CN106708719A (zh) * | 2015-08-04 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 业务功能的测试方法和装置 |
CN109213676A (zh) * | 2018-07-06 | 2019-01-15 | 中国电力科学研究院有限公司 | 一种用于测试脚本的离线调试方法及装置 |
CN109254982A (zh) * | 2018-08-31 | 2019-01-22 | 杭州安恒信息技术股份有限公司 | 一种流数据处理方法、***、装置及计算机可读存储介质 |
CN109684192A (zh) * | 2018-08-21 | 2019-04-26 | 平安普惠企业管理有限公司 | 基于数据处理的本地测试方法、设备、存储介质及装置 |
WO2019084465A1 (en) * | 2017-10-27 | 2019-05-02 | Streamsimple, Inc. | CONTINUOUS DIFFUSION MICRO-SERVICES FOR FLOW PROCESSING APPLICATIONS |
CN109977013A (zh) * | 2019-03-19 | 2019-07-05 | 深圳市腾讯信息技术有限公司 | 一种调试信息获取方法、***及装置 |
CN110069335A (zh) * | 2019-05-07 | 2019-07-30 | 江苏满运软件科技有限公司 | 任务处理***、方法、计算机设备和存储介质 |
CN110209700A (zh) * | 2019-05-24 | 2019-09-06 | 北京奇艺世纪科技有限公司 | 一种数据流关联方法、装置、电子设备及存储介质 |
-
2019
- 2019-10-08 CN CN201910948438.5A patent/CN110781079B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002229814A (ja) * | 2001-02-02 | 2002-08-16 | Hitachi Ltd | デバッグ方法及び情報処理システム |
CN101615159A (zh) * | 2009-07-31 | 2009-12-30 | 中兴通讯股份有限公司 | 离线测试***及其本地数据管理方法及相应的装置 |
WO2011039570A1 (en) * | 2009-09-30 | 2011-04-07 | Freescale Semiconductor, Inc. | Distributed debug system |
US20130191815A1 (en) * | 2012-01-23 | 2013-07-25 | Microsoft Corporation | Tsql debug breakpoint interoperability across heterogeneous projects |
CN106708719A (zh) * | 2015-08-04 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 业务功能的测试方法和装置 |
CN106201887A (zh) * | 2016-07-18 | 2016-12-07 | 合网络技术(北京)有限公司 | 一种离线数据任务的验证方法及装置 |
WO2019084465A1 (en) * | 2017-10-27 | 2019-05-02 | Streamsimple, Inc. | CONTINUOUS DIFFUSION MICRO-SERVICES FOR FLOW PROCESSING APPLICATIONS |
CN109213676A (zh) * | 2018-07-06 | 2019-01-15 | 中国电力科学研究院有限公司 | 一种用于测试脚本的离线调试方法及装置 |
CN109684192A (zh) * | 2018-08-21 | 2019-04-26 | 平安普惠企业管理有限公司 | 基于数据处理的本地测试方法、设备、存储介质及装置 |
CN109254982A (zh) * | 2018-08-31 | 2019-01-22 | 杭州安恒信息技术股份有限公司 | 一种流数据处理方法、***、装置及计算机可读存储介质 |
CN109977013A (zh) * | 2019-03-19 | 2019-07-05 | 深圳市腾讯信息技术有限公司 | 一种调试信息获取方法、***及装置 |
CN110069335A (zh) * | 2019-05-07 | 2019-07-30 | 江苏满运软件科技有限公司 | 任务处理***、方法、计算机设备和存储介质 |
CN110209700A (zh) * | 2019-05-24 | 2019-09-06 | 北京奇艺世纪科技有限公司 | 一种数据流关联方法、装置、电子设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
SANKET CHINTAPALLI 等: "Benchmarking Streaming Computation Engines: Storm, Flink and Spark Streaming", 《2016 IEEE INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM WORKSHOPS (IPDPSW)》 * |
王松: "数据流引擎在营配信息集成的实现与应用", 《广西电力》 * |
谭勇: "Spark和Flink的计算模型对比研究", 《科技与信息》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010512A (zh) * | 2021-02-24 | 2021-06-22 | 上海中通吉网络技术有限公司 | 基于Flink的实时数据处理方法、平台和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110781079B (zh) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459962B (zh) | 代码规范性检测方法、装置、终端设备及存储介质 | |
CN105094783B (zh) | 安卓应用稳定性测试的方法及装置 | |
US8140911B2 (en) | Dynamic software tracing | |
US20150095892A1 (en) | Systems and methods for evaluating a change pertaining to a service or machine | |
CN113127347B (zh) | 一种接口测试方法、装置、设备及可读存储介质 | |
CN111522728A (zh) | 自动化测试用例的生成方法、电子设备及可读存储介质 | |
US20090222646A1 (en) | Method and apparatus for detecting processor behavior using instruction trace data | |
US10528456B2 (en) | Determining idle testing periods | |
CN104021072A (zh) | 用于评估失效的软件程序的机器和方法 | |
CN109101410B (zh) | 一种风险驱动测试方法和装置以及计算机可读存储介质 | |
CN110879781A (zh) | 程序调试方法、装置、电子设备及计算机可读存储介质 | |
CN111858354A (zh) | 自动生成测试报告的方法、装置、存储介质及电子设备 | |
CN110597710B (zh) | 测试覆盖率统计方法、装置、计算机设备及存储介质 | |
CN111651358A (zh) | 生成测试用例的方法、软件测试方法、装置和服务器 | |
CN110781079B (zh) | 数据处理流程调试方法、装置及电子设备 | |
CN109634822B (zh) | 一种函数耗时统计方法、装置、存储介质及终端设备 | |
CN110908899A (zh) | 应用程序的调试方法、移动终端及计算机可读存储介质 | |
CN114201397A (zh) | 一种接口测试建模方法、装置、电子设备和存储介质 | |
CN113254350A (zh) | 一种Flink作业测试方法、装置、设备及存储介质 | |
CN117215959A (zh) | 软件测试方法、装置、设备及存储介质 | |
CN110032781B (zh) | 编辑时序约束方法、装置、计算机设备及存储介质 | |
CN114691519A (zh) | 接口自动化测试方法、装置、设备及存储介质 | |
CN110442370B (zh) | 一种测试用例查询方法及装置 | |
CN113849404A (zh) | 对接口测试相关信息的管理方法、装置及存储介质 | |
CN113806231A (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 |