DolphinScheduler - 1.3 系列核心表结构剖析

解析ApacheDolphinScheduler工作流定义与任务类型结构,包括Shell、SQL、Spark等节点详细参数,揭示数据处理流程核心。

Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

近日,伯毅同学给社区贡献了工作流核心表结构的剖析文章,非常细致,喜欢的伙伴请转走

1. 工作流总体存储结构

在 dolphinscheduler 库中创建的所有工作流定义(模板)都保存在 t_ds_process_definition 表中.

该数据库表结构如下表所示:

序号

字段

类型

描述

1

id

int(11)

主键

2

name

varchar(255)

流程定义名称

3

version

int(11)

流程定义版本

4

release_state

tinyint(4)

流程定义的发布状态:0 未上线 , 1已上线

5

project_id

int(11)

项目id

6

user_id

int(11)

流程定义所属用户id

7

process_definition_json

longtext

流程定义JSON

8

description

text

流程定义描述

9

global_params

text

全局参数

10

flag

tinyint(4)

流程是否可用:0 不可用,1 可用

11

locations

text

节点坐标信息

12

connects

text

节点连线信息

13

receivers

text

收件人

14

receivers_cc

text

抄送人

15

create_time

datetime

创建时间

16

timeout

int(11)

超时时间

17

tenant_id

int(11)

租户id

18

update_time

datetime

更新时间

19

modify_by

varchar(36)

修改用户

20

resource_ids

varchar(255)

资源ids

其中 process_definition_json 字段为核心字段, 定义了 DAG 图中的任务信息.该数据以JSON 的方式进行存储.

公共的数据结构如下表:

序号

字段

类型

描述

1

globalParams

Array

全局参数

2

tasks

Array

流程中的任务集合 [ 各个类型的结构请参考如下章节]

3

tenantId

int

租户id

4

timeout

int

超时时间

数据示例:

{

    "globalParams":[

        {

            "prop":"golbal_bizdate",

            "direct":"IN",

            "type":"VARCHAR",

            "value":"${system.biz.date}"

        }

    ],

    "tasks":Array[1],

    "tenantId":0,

    "timeout":0

}

2. 各任务类型存储结构详解

2.1 Shell 节点

Shell 节点数据结构如下:

序号

参数名


类型

描述

描述

1

id


String

任务编码


2

type


String

类型

SHELL

3

name


String

名称


4

params


Object

自定义参数

Json 格式

5


rawScript

String

Shell脚本


6


localParams

Array

自定义参数


7


resourceList

Array

资源文件


8

description


String

描述


9

runFlag


String

运行标识


10

conditionResult


Object

条件分支


11


successNode

Array

成功跳转节点


12


failedNode

Array

失败跳转节点


13

dependence


Object

任务依赖

与params互斥

14

maxRetryTimes


String

最大重试次数


15

retryInterval


String

重试间隔


16

timeout


Object

超时控制


17

taskInstancePriority


String

任务优先级


18

workerGroup


String

Worker 分组


19

preTasks


Array

前置任务


Shell 节点数据样例:

{

    "type":"SHELL",

    "id":"tasks-80760",

    "name":"Shell Task",

    "params":{

        "resourceList":[

            {

                "id":3,

                "name":"run.sh",

                "res":"run.sh"

            }

        ],

        "localParams":[

 

        ],

        "rawScript":"echo "This is a shell script""

    },

    "description":"",

    "runFlag":"NORMAL",

    "conditionResult":{

        "successNode":[

            ""

        ],

        "failedNode":[

            ""

        ]

    },

    "dependence":{

 

    },

    "maxRetryTimes":"0",

    "retryInterval":"1",

    "timeout":{

        "strategy":"",

        "interval":null,

        "enable":false

    },

    "taskInstancePriority":"MEDIUM",

    "workerGroup":"default",

    "preTasks":[

 

    ]

}

2.2 SQL节点

通过 SQL 对指定的数据源进行数据查询、更新操作.

SQL 节点数据结构如下:

序号

参数名


类型

描述

描述

1

id


String

任务编码


2

type


String

类型

SQL

3

name


String

名称


4

params


Object

自定义参数

Json 格式

5


type

String

数据库类型


6


datasource

Int

数据源id


7


sql

String

查询SQL语句


8


udfs

String

udf函数

UDF函数id,以逗号分隔.

9


sqlType

String

SQL节点类型

0 查询 , 1 非查询

10


title

String

邮件标题


11


receivers

String

收件人


12


receiversCc

String

抄送人


13


showType

String

邮件显示类型

TABLE 表格 , ATTACHMENT附件

14


connParams

String

连接参数


15


preStatements

Array

前置SQL


16


postStatements

Array

后置SQL


17


localParams

Array

自定义参数


18

description


String

描述


19

runFlag


String

运行标识


20

conditionResult


Object

条件分支


21


successNode

Array

成功跳转节点


22


failedNode

Array

失败跳转节点


23

dependence


Object

任务依赖

与params互斥

24

maxRetryTimes


String

最大重试次数


25

retryInterval


String

重试间隔


26

timeout


Object

超时控制


27

taskInstancePriority


String

任务优先级


28

workerGroup


String

Worker 分组


29

preTasks


Array

前置任务


SQL 节点数据样例:

{

    "type":"SQL",

    "id":"tasks-95648",

    "name":"SqlTask-Query",

    "params":{

        "type":"MYSQL",

        "datasource":1,

        "sql":"select id , namge , age from emp where id =  ${id}",

        "udfs":"",

        "sqlType":"0",

        "title":"xxxx@xxx.com",

        "receivers":"xxxx@xxx.com",

        "receiversCc":"",

        "showType":"TABLE",

        "localParams":[

            {

                "prop":"id",

                "direct":"IN",

                "type":"INTEGER",

                "value":"1"

            }

        ],

        "connParams":"",

        "preStatements":[

            "insert into emp ( id,name ) value (1,'Li' )"

        ],

        "postStatements":[

 

        ]

    },

    "description":"",

    "runFlag":"NORMAL",

    "conditionResult":{

        "successNode":[

            ""

        ],

        "failedNode":[

            ""

        ]

    },

    "dependence":{

 

    },

    "maxRetryTimes":"0",

    "retryInterval":"1",

    "timeout":{

        "strategy":"",

        "interval":null,

        "enable":false

    },

    "taskInstancePriority":"MEDIUM",

    "workerGroup":"default",

    "preTasks":[

 

    ]

}

2.2 Spark 节点

Spark 节点数据结构如下:

序号

参数名


类型

描述

描述

1

id


String

任务编码


2

type


String

类型

SPARK

3

name


String

名称


4

params

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DolphinScheduler社区

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

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

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

打赏作者

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

抵扣说明:

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

余额充值