基于DAG图任务调度的数据质量检测方法和装置与流程

文档序号:33292363发布日期:2023-02-28 20:16阅读:66来源:国知局
基于DAG图任务调度的数据质量检测方法和装置与流程
基于dag图任务调度的数据质量检测方法和装置
技术领域
1.本发明一般涉及数据处理领域,并且更具体地,涉及基于dag图任务调度的数据质量检测方法和装置。


背景技术:

2.随着数据处理与业务运营间的联系越来越紧密与复杂,越来越多的行业用户使用大数据技术、数据分析等手段挖掘数据的潜在联系和价值以辅助业务决策。在数据管理过程中每一个环节都可能导致数据错误,如数据标准制定混乱、数据源本身存在质量问题、数据采集出现问题导致数据缺失等。因此进行数据质量管理意义重大,会直接影响下游任务的效果和效率。
3.目前市面上有很多数据质量平台,如apache griffin和qualitis等,但这些产品属于一个完全闭环的平台。它们可以对一份数据的质量进行评价,但无法根据其质量决定数据流向。在实际应用中,数据质量检测不仅是独立的一部分,而是应该作为整个数据流的一部分。当前无法通过一个证明过程证明整个数据流所使用数据的正确性,即无法确保数据处理前的数据和数据处理的结果不存在问题。


技术实现要素:

4.根据本发明的实施例,提供了一种基于dag图任务调度的数据质量检测方案。本方案能够将数据质量检测作为数据流的一部分参与任务调度,通过引入dag图,简化了用户操作,实现了对数据源质量的检测。
5.在本发明的第一方面,提供了一种基于dag图任务调度的数据质量检测方法。该方法包括:获取目标数据源的连接参数,对所述目标数据源执行查询,检测所述连接参数是否正确,若是,则根据所述连接参数连接所述目标数据源;否则返回连接错误信息;若所述目标数据源连接成功,则检测所述目标数据源是否可用,将可用的目标数据源的连接参数存储到数据库中;获取数据质量检测模板及其模板参数;所述数据质量检测模板用于通过预先定义的数据质量检测规则对所述目标数据源的数据质量进行检测;对所述数据质量检测模板对应的数据质量检测规则的合法性进行校验,将校验通过的数据质量检测规则存储到数据库中;将支持的任务类型作为节点组件,进行节点配置,根据数据质量任务间的依赖关系绘制生成dag图,将所述dag图中的节点配置信息、节点位置信息和节点之间的依赖关系存储到数据库中;当任务执行开始时,生成任务实例,对所述任务实例进行分布式调度并运行数据质量任务,将运行结果存储到数据库中。
6.进一步地,所述对所述目标数据源执行查询,包括:
对于通过jdbc方式连接的数据源,执行select语句进行查询;对于非通过jdbc方式连接的数据源,执行集群状态类的命令进行查询。
7.进一步地,对于通过jdbc方式连接的数据源,将对应的连接参数拼接成用于jdbc连接的url,通过druid连接池连接该数据源。
8.进一步地,所述检测所述目标数据源是否可用,通过使用jdbc连接对象执行select查询语句进行检测。
9.进一步地,所述节点配置,包括:为节点生成节点编号,将所述节点编号以及对应的节点名称、节点状态、节点可用硬件资源、节点特有属性存储在数据库中。
10.进一步地,在绘制生成dag图后,通过拓扑排序遍历节点算法检查节点间是否存在循环依赖,若存在,则生成dag图的修改提示。
11.进一步地,在对所述任务实例进行分布式调度时,判断在目标调度任务对应的待执行的时间段内是否存在与所述目标调度任务标识符相同的标识符,若是,则对目标调度任务重新进行调度;否则在所述待执行的时间段执行所述目标调度任务。
12.进一步地,还包括:从数据库中读取数据质量任务的运行结果,判断所述运行结果是否满足预设条件,若是,则运行结果为成功;否则运行结果为失败;当运行结果为失败时,若存在失败配置策略,则根据所述失败配置策略进行处理;当运行结果为成功时,若存在成功配置策略,则根据所述成功配置策略进行处理。
13.在本发明的第二方面,提供了一种基于dag图任务调度的数据质量检测装置。该装置包括:查询检测模块,用于获取目标数据源的连接参数,对所述目标数据源执行查询,检测所述连接参数是否正确,若是,则根据所述连接参数连接所述目标数据源;否则返回连接错误信息;若所述目标数据源连接成功,则检测所述目标数据源是否可用,将可用的目标数据源的连接参数存储到数据库中;模板校验模块,用于获取数据质量检测模板及其模板参数;所述数据质量检测模板用于通过预先定义的数据质量检测规则对所述目标数据源的数据质量进行检测;对所述数据质量检测模板对应的数据质量检测规则的合法性进行校验,将校验通过的数据质量检测规则存储到数据库中;生成模块,用于将支持的任务类型作为节点组件,进行节点配置,根据数据质量任务间的依赖关系绘制生成dag图,将所述dag图中的节点配置信息、节点位置信息和节点之间的依赖关系存储到数据库中;调度运行模块,用于当任务执行开始时,生成任务实例,对所述任务实例进行分布式调度并运行数据质量任务,将运行结果存储到数据库中。
14.在本发明的第三方面,提供了一种电子设备。该电子设备至少一个处理器;以及与所述至少一个处理器通信连接的存储器;所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明第一方面的方法。
15.应当理解,发明内容部分中所描述的内容并非旨在限定本发明的实施例的关键或
重要特征,亦非用于限制本发明的范围。本发明的其它特征将通过以下的描述变得容易理解。
附图说明
16.结合附图并参考以下详细说明,本发明各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:图1示出了根据本发明的实施例的基于dag图任务调度的数据质量检测方法的流程图;图2示出了根据本发明的实施例的基于dag图任务调度的数据质量检测装置的方框图;图3示出了能够实施本发明的实施例的示例性电子设备的方框图;其中,300为电子设备、301为cpu、302为rom、303为ram、304为总线、305为i/o接口、306为输入单元、307为输出单元、308为存储单元、309为通信单元。
具体实施方式
17.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本发明保护的范围。
18.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
19.本发明中,将数据质量检测作为数据流的一部分参与任务调度,可以根据用户需求设置数据质量检测位置、规则和失败或成功策略,有高度可定制性和可扩展性,并且更加贴近工程实际。同时引入了图形界面和绘制dag图的方式,简化了用户的操作并降低学习成本,使得非专业人士也可以轻易完成数据质量检测任务。
20.图1示出了本发明实施例的基于dag图任务调度的数据质量检测方法的流程图。
21.该方法包括:s101、获取目标数据源的连接参数,对所述目标数据源执行查询,检测所述连接参数是否正确,若是,则根据所述连接参数连接所述目标数据源;否则返回连接错误信息;若所述目标数据源连接成功,则检测所述目标数据源是否可用,将可用的目标数据源的连接参数存储到数据库中。
22.在本实施例中,系统可以连接多种不同的数据源,例如mysql、oracle、hive、elasticsearch等。用户可以根据需求在前端的用户界面中选择数据源类型作为目标数据源类型,根据数据源类型填写指定的连接参数。后端在获取到连接参数后尝试在指定数据源上执行基本查询。
23.作为本发明的一种实施例,对所述目标数据源执行查询,包括:对于通过jdbc方式连接的数据源,执行select语句进行查询;例如可使用“select 1”语句加快查询速度、减少系统开销。
24.在本实施例中,对于可用jdbc(java database connectivity,java数据库连接)方式连接的数据源,如mysql、oracle、hive等,将用户填写的数据源类型、地址、端口、数据库名、jdbc附加参数拼接成jdbc连接url,通过druid连接池连接数据源。
25.对于非通过jdbc方式连接的数据源,执行集群状态类的命令进行查询。所述集群状态类的命令是对于无法使用jdbc连接的数据源的执行命令,因无法使用jdbc提供的sql语句,为加快速度使用查询集群状态类的命令验证数据源连接参数是否正确。例如,elasticsearch使用get host:ip/_cluster/health进行查询。
26.作为本发明的一种实施例,若数据源连接成功,则使用jdbc连接对象执行select 1查询语句检测数据源是否可用。若数据源连接失败则提示用户修改连接参数。
27.作为本发明的一种实施例,数据源检测通过后,将连接参数(转换成json字符串)、创建用户、创建时间、修改时间等参数存储入数据库中,供后续步骤使用。
28.值得注意的是,这里的数据源应不仅局限于待进行数据质量检测的数据源,应包含用户在整个流程中使用的数据源,例如配置了失败策略将未通过数据质量检测的数据转移到其他数据库中。
29.s102、获取数据质量检测模板及其模板参数;所述数据质量检测模板用于通过预先定义的数据质量检测规则对所述目标数据源的数据质量进行检测;对所述数据质量检测模板对应的数据质量检测规则的合法性进行校验,将校验通过的数据质量检测规则存储到数据库中。
30.在本实施例中,用户可根据需求定义多条不同的数据质量检测规则,例如对源数据进行检测或对处理后的数据进行检测等等。用户在前端的用户界面中选择对数据质量模板进行选择。所述数据质量检测模板,例如空值检测、两表对比、唯一性校验、字段长度校验、字段正则表达式校验、表行数校验、自定义sql等。
31.在本实施例中,根据所选模板提供必须的模板参数,如规则名称、数据源、表、列、过滤条件、阈值等。
32.在本实施例中,对于不同的数据质量检测规则,采取不同的校验方法,例如校验空值检测时,需要检测用户提供的表、列是否合法;对于自定义sql语句,需要校验用户指定的数据源是否支持sql查询、用户提供的sql语句语法是否正确、sql语句是否为统计sql等。
33.以空值检测为例对校验方法进行说明:空值检测的目标是判断目标表中指定列为空的行数是否在指定检测条件下满足指定的条件和阈值。检测方式包括指定列为空的行数和期望值差和比例,期望值可以为固定值、时间段内均值、目标表总行数。检测条件包括等于、大于、小于、大于等于、小于等于、不等于。同时可使用可选的其它条件过滤目标表的特定行。
34.使用如下sql语句可判断目标表中的指定列是否存在。
35.col_length(${目标表}, ${指定列})如果该语句返回null说明目标表中的指定列不存在,反之存在。
36.使用如下sql语句可以计算指定列为空的行数:select count(*) as miss from ${目标表} where (${指定列} is null or ${指定列} = '') and (${可选的其它条件})使用如下sql语句可以计算总行数:
select count(*) as miss from ${目标表} where ${可选的其它条件}其中目标表、指定列、可选的其它条件为上述数据质量检测规则的参数。
37.作为本发明的一种实施例,在数据质量检测规则合法性校验通过后,将检测规则(转换成json字符串)、创建用户、创建时间、修改时间等参数存储入数据库中,供后续步骤使用,否则提示用户修改数据质量检测规则参数。
38.s103、将支持的任务类型作为节点组件,进行节点配置,根据数据质量任务间的依赖关系绘制生成dag图,将所述dag图中的节点配置信息、节点位置信息和节点之间的依赖关系存储到数据库中。
39.作为本发明的一种实施例,用户可在前端界面提供的画布中绘制表示整个任务流程的dag图。dag图即有向无环图,表示多条链跟随主链,这些链之间大方向相同且不存在环路。
40.在本实施例中,前端用户界面将支持的任务类型(数据质量检测任务、数据迁移任务、sql任务和条件分支等)作为节点组件提供给用户,用户可将节点组件拖拽至画布上进行详细配置。
41.所述节点配置,即为节点生成节点编号,将所述节点编号以及对应的节点名称、节点状态、节点可用硬件资源、节点特有属性(转换为json字符串)存储在数据库中。例如,数据质量检测任务可选择所采用配置好的数据质量检测规则。
42.节点配置完成后,用户可使用连接线工具连接节点组件,以表示不同任务间的依赖关系。例如节点1和节点2之间存在有向连线,箭头指向节点2,表示节点1和节点2之间存在依赖关系。
43.作为本发明的一种实施例,在绘制生成dag图后,通过拓扑排序遍历节点算法检查节点间是否存在循环依赖,若存在,则生成dag图的修改提示,提示用户修改dag图。
44.在本实施例中,所述通过拓扑排序遍历节点算法检查节点间是否存在循环依赖的过程,包括:步骤1、生成原图副本,节点信息包含节点编号、前置节点列表、入度、出度;步骤2、计算所有节点的入度(前置节点个数)和出度(后继节点个数)步骤3、判断是否存在入度为零的节点,若存在,执行步骤4;若不存在,则图中存在环,结束。
45.步骤4、创建节点队列,将当前所有入度为0的节点加入队列,判断队列是否为空,若非空,执行步骤5;步骤5、弹出队首节点并遍历所有与其相邻后继节点,若某一后继节点入度为1,将其加入队列,否则将其入度减1;遍历完成后返回判断队列是否为空;步骤6、判断已经访问的节点数是否等于所有节点数,若是,则图中不存在环;反之则图中存在环。
46.作为本发明的一种实施例,检查完成后,通过连接线得到任务间的依赖关系,并将dag图中所有节点配置信息、位置信息以及依赖关系存入数据库中,便于下次查看或修改dag图。
47.s104、当任务执行开始时,生成任务实例,对所述任务实例进行分布式调度并运行数据质量任务,将运行结果存储到数据库中。
48.作为本发明的一种实施例,当用户将dag图任务流状态设置为上线后,可以在前端界面配置任务启动方式。所述启动方式可以配置为手动启动或定时启动。手动启动即用户通过人为触发执行启动。定时启动即采用cron表达式设置在规定时间执行启动。
49.在上述实施例中,在用户启动手动任务或定时任务达到指定执行时间时,生成任务实例,并对所述任务实例进行分布式调度。所述分布式调度可以使用已有的分布式调度框架。所述任务实例使用唯一的标识符进行区分,相同的任务实例在同一时间内只能存在一个,防止调度时出现矛盾。
50.在上述实施例中,为保证相同的任务实例在同一时间内只能存在一个,在对所述任务实例进行分布式调度时,判断在目标调度任务对应的待执行的时间段内是否存在与所述目标调度任务标识符相同的标识符,若是,则对目标调度任务重新进行调度,同时提示用户等待;否则在所述待执行的时间段执行所述目标调度任务。
51.在本实施例中,数据质量任务基于spark计算(分析)引擎运行,在运行结束之后将运行结果写入到指定的数据库中。
52.从数据库中读取数据质量任务的运行结果,判断所述运行结果是否满足预设条件,若是,则运行结果为成功;否则运行结果为失败。所述预设条件由用户根据需求初始预设;根据用户配置的检查方式,例如操作符或阈值等对运行结果是否满足预设条件进行判断。
53.当运行结果为失败时,若存在失败配置策略,则根据所述失败配置策略进行处理;例如告警或中断等。
54.当运行结果为成功时,若存在成功配置策略,则根据所述成功配置策略进行处理。
55.在一些实施例中,任务流运行完成后,后端从指定位置读取任务结果和日志,并传回至前端用户界面供用户查看。
56.根据本发明的实施例,将数据质量检测作为数据流的一部分参与任务调度,可以根据用户需求设置数据质量检测位置、规则和失败或成功策略,有高度可定制性和可扩展性,并且更加贴近工程实际。同时引入了图形界面和绘制dag图的方式,简化了用户的操作并降低学习成本,使得非专业人士也可以轻易完成数据质量检测任务。
57.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
58.以上是关于方法实施例的介绍,以下通过装置实施例,对本发明所述方案进行进一步说明。
59.如图2所示,装置200包括:查询检测模块210,用于获取目标数据源的连接参数,对所述目标数据源执行查询,检测所述连接参数是否正确,若是,则根据所述连接参数连接所述目标数据源;否则返回连接错误信息;若所述目标数据源连接成功,则检测所述目标数据源是否可用,将可用的目标数据源的连接参数存储到数据库中。
60.模板校验模块220,用于获取数据质量检测模板及其模板参数;所述数据质量检测
模板用于通过预先定义的数据质量检测规则对所述目标数据源的数据质量进行检测;对所述数据质量检测模板对应的数据质量检测规则的合法性进行校验,将校验通过的数据质量检测规则存储到数据库中。
61.生成模块230,用于将支持的任务类型作为节点组件,进行节点配置,根据数据质量任务间的依赖关系绘制生成dag图,将所述dag图中的节点配置信息、节点位置信息和节点之间的依赖关系存储到数据库中。
62.调度运行模块240,用于当任务执行开始时,生成任务实例,对所述任务实例进行分布式调度并运行数据质量任务,将运行结果存储到数据库中。
63.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
64.本发明的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
65.根据本发明的实施例,本发明还提供了一种电子设备。
66.图3示出了可以用来实施本发明的实施例的电子设备300的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
67.设备300包括计算单元301,其可以根据存储在只读存储器(rom)302中的计算机程序或者从存储单元308加载到随机访问存储器(ram)303中的计算机程序,来执行各种适当的动作和处理。在ram 303中,还可存储设备300操作所需的各种程序和数据。计算单元301、rom 302以及ram 303通过总线304彼此相连。输入/输出(i/o)接口305也连接至总线304。
68.设备300中的多个部件连接至i/o接口305,包括:输入单元306,例如键盘、鼠标等;输出单元307,例如各种类型的显示器、扬声器等;存储单元308,例如磁盘、光盘等;以及通信单元309,例如网卡、调制解调器、无线通信收发机等。通信单元309允许设备300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
69.计算单元301可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元301的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元301执行上文所描述的各个方法和处理,例如方法s101~s104。例如,在一些实施例中,方法s101~s104可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元308。在一些实施例中,计算机程序的部分或者全部可以经由rom 302和/或通信单元309而被载入和/或安装到设备300上。当计算机程序加载到ram 303并由计算单元301执行时,可以执行上文描述的方法s101~s104的一个或多个步骤。备选地,在其他实施例中,计算单元301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法s101~s104。
70.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统
的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
71.用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
72.在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
73.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
74.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
75.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
76.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
77.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1