Apache Dolphinscheduler数据质量源码分析

Apache DolphinScheduler 是一个分布式、易扩展的可视化数据工作流任务调度系统,广泛应用于数据调度和处理领域。

在大规模数据工程项目中,数据质量的管理至关重要,而 DolphinScheduler 也提供了数据质量检查的计算能力。本文将对 Apache DolphinScheduler 的数据质量模块进行源码分析,帮助开发者深入理解其背后的实现原理与设计理念。

数据质量规则

Apache Dolphinscheduler 数据质量模块支持多种常用的数据质量规则,如下图所示。

数据质量规则主要包括空值校验、自定义SQL、跨表准确性、跨表值比、字段长度校验、唯一性校验、及时性检查、枚举值校验、表行数校验等。

数据质量工作流程

数据质量运行流程分为2个部分:

(1)在Web端进行数据质量检测的流程定义,通过DolphinScheduer进行调度,提交到Spark计算引擎;

(2)Spark端负责解析数据质量模型的参数,通过读取数据、执行转换、输出三个步骤,完成数据质量检测任务,工作流程如下图所示。

在Web端进行定义

数据质量定义如下图所示,这里只定义了一个节点。

以一个空值检测的输入参数为例,在界面完成配置后,会生产一个JSON文件。

这个JSON文件会以字符串参数形式提交给Spark集群,进行调度和计算。

JSON文件如下所示。


{
    "name": "$t(null_check)",
    "env": {
        "type": "batch",
        "config": null
    },
    "readers": [
        {
            "type": "JDBC",
            "config": {
                "database": "ops",
                "password": "***",
                "driver": "com.mysql.cj.jdbc.Driver",
                "user": "root",
                "output_table": "ops_ms_alarm",
                "table": "ms_alarm",
                "url": "jdbc:mysql://192.168.3.211:3306/ops?allowLoadLocalInfile=false&autoDeserialize=false&allowLocalInfile=false&allowUrlInLocalInfile=false"
            }
        }
    ],
    "transformers": [
        {
            "type": "sql",
            "config": {
                "index": 1,
                "output_table": "total_count",
                "sql": "SELECT COUNT(*) AS total FROM ops_ms_alarm"
            }
        },
        {
            "type": "sql",
            "config": {
                "index": 2,
                "output_table": "null_items",
                "sql": "SELECT * FROM ops_ms_alarm WHERE (alarm_time is null or alarm_time = '') "
            }
        },
        {
            "type": "sql",
            "config": {
                "index": 3,
                "output_table": "null_count",
                "sql": "SELECT COUNT(*) AS nulls FROM null_items"
            }
        }
    ],
    "writers": [
        {
            "type": "JDBC",
            "config": {
                "database": "dolphinscheduler3",
                "password": "***",
                "driver": "com.mysql.cj.jdbc.Driver",
                "user": "root",
                "table": "t_ds_dq_execute_result",
                "url": "jdbc:mysql://192.168.3.212:3306/dolphinscheduler3?characterEncoding=utf-8&allowLoadLoc
对于DolphinScheduler源码分析,我可以给你一些大致的指导。DolphinScheduler是一款开源的分布式任务调度系统,主要用于大数据领域的任务调度和数据处理。它采用了分布式架构,支持高可用性和高可扩展性。 首先,你可以从DolphinScheduler的GitHub仓库中获取源代码:https://github.com/apache/incubator-dolphinscheduler源码中,你可以先从入口开始分析,主要涉及到的类是`org.apache.dolphinscheduler.server.master.MasterServerApplication`和`org.apache.dolphinscheduler.server.worker.WorkerServerApplication`,它们分别是Master节点和Worker节点的入口。 从Master节点入口开始,你可以深入了解Master节点的整体架构和实现。一些关键的类包括`org.apache.dolphinscheduler.server.master.MasterSchedulerService`、`org.apache.dolphinscheduler.server.master.runner.MasterSchedulerThread`和`org.apache.dolphinscheduler.server.master.cache.ScheduleService`等。 在Worker节点方面,你可以关注`org.apache.dolphinscheduler.server.worker.runner.WorkerManager`、`org.apache.dolphinscheduler.server.worker.runner.WorkerExecProcessor`和`org.apache.dolphinscheduler.server.worker.cache.LocalTaskCacheManager`等类,它们负责Worker节点的任务执行和管理。 此外,还有一些其他重要的模块需要进行源码分析,比如任务调度算法、任务执行环境配置、任务依赖处理、日志管理等。 在进行源码分析时,你可以结合官方提供的文档和注释,以及各个类和方法的调用关系来理清思路。可以通过IDE的调试功能和日志输出来帮助你更好地理解源码的执行流程和逻辑。 总体来说,DolphinScheduler源码分析需要一定的时间和精力,建议你先对整体架构和关键模块有一个整体的了解,然后再深入到具体的实现细节。希望这些信息对你有所帮助,祝你顺利进行源码分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值