# IDE 概览
当平台搭建完毕后,后续的数据开发工作都将在 IDE 中完成。
IDE 是数据开发人员进行日常开发工作的工作台,提供图形化、拖拽式的数据开发体验。
支持对数据同步作业、数据加工作业(转换、作业)、通用模板作业、Shell程序、SQL程序、Spark程序、Flink程序、DI程序、MapReduce程序、Python程序、作业流等任务的在线可视化开发。
# 操作说明
点击项目列表右侧的【项目开发】按钮,进入 DWS IDE 界面。
DWS IDE 界面如下图所示,分为三个区域:
资源树:项目的开发资源(数据同步、数据加工、通用模板、程序、作业流、数据源)以树形方式展示。
画布区:可视化开发集成作业/作业流,一个画布就是一个开发资源,可以通时展示多个画布。
- 通用配置:每个资源可以单独配置通用属性,包括:任务优先级、Worker 分组、任务组、任务组优先级、环境、命名参数、本地参数、超时告警、备注等。数据同步与数据加工的通用配置项有区别,参见后续详细说明。
- 指标日志:开启日志,记录作业运行后读、写、更新、输入、输出的数据量。数据加工作业及基于 Primeton DI 的通用模板作业需要在 IDE 中开启配置。可以在任务实例中查看任务类型为“PDI-TRANS、PDI-JOB、SEATUNNEL”的数据处理量。其他任务类型不支持查看数据量。
- 版本:显示版本记录。
- 草稿:显示草稿记录,最多保留最近 10 个草稿。
- 数据血缘:查看整个ETL流程的数据走向包括:数据源、表、字段血缘关系,默认不显示。需要在安装部署产品时手工配置开启,具体操作参见:数据血缘
- 运行:在线运行任务。
- 停止:停止任务的运行。
- 保存:保存修改后的草稿。
- 提交:修改后的资源提交后生成新的版本号。
日志栏:在线调试运行时,可以同步输出执行日志,便于用户查看执行过程。
- 刷新日志:刷新输出日志,以保持最新日志的输出。
- 刷新实例:刷新实例的执行状态,有三种状态:执行完毕、执行中、执行错误。
- 清空:清空当前输出的日志。
- 下载:当日志太多无法展示全,可以下载日志到本地。遇到异常无法自行解决时,可将此文件发给普元售后进一步分析。
# 通用配置-数据同步
数据同步和基于 Seatunnel 的通用模板的通用配置项是一样的,有五类配置,包括基础信息、失败重试、超时机制、部署配置、引擎参数。如下图所示:
配置项 | 默认值 | 说明 |
---|---|---|
作业名称 | 作业名称 | 当前已经创建/打开的数据加工作业名称。 |
任务优先级 | MEDIUM | 执行任务的优先级,共有五级: - HIGHEST:最高 - HIGH:高 - MEDIUM:中 - LOW:低 - LOWEST:最低 当 master 线程数不足时,级别高的流程在执行队列中会优先执行,相同优先级的流程按照先进先出的顺序执行。 |
Worker分组 | default | 该任务在指定的 worker 机器组里执行。默认是 Default,可以在任一 worker 上执行。 |
任务组 | 无 | 如果项目已经添加了任务组配置,则可以在下拉框中进行选择。 |
任务组优先级 | 0 | 数字越大表明任务执行的优先级越高。 |
环境名称 | 无 | 如果项目已经添加了任务组配置,则可以在下拉框中进行选择,在任务执行时,根据 worker 分组选择对应的环境,最终由该组中的 worker 节点执行环境后执行该任务。 |
本地参数 | 无 | 调度的任务类型中自定义的参数,IN 是输入参数,OUT 是输出参数,需要使用${setValue(key=value)}的方式赋值。 |
失败重试次数 | 0 次 | 作业执行失败的重试次数 |
失败重试间隔 | 1 分钟 | 重试执行时的建个时间,单位为:分钟。 |
超时告警 | 不开启 | 设置是否启用超时告警的功能,开启后需要配置告警策略、超时时间。 |
告警策略 | 超时告警 | 两个选项: - 超时告警:当任务超过”超时时间”后,会发送告警邮件; - 超时失败:当任务超过”超时时间”后,任务执行失败。 |
超时时间 | 30分钟 | 设置作业执行的超时时间。 |
部署方式 | cluster | 两种选项: - cluster:适用于生产运行; - local:适用于开发及测试。 |
引擎参数 | 无 | 用于添加 Seatunnel 执行引擎的参数。可以配置key-value或者直接编写json。 |
并行度 | 1 | 最多并行执行的实例数。 |
备注 | 无 | 该作业的描述。 |
# 通用配置-数据加工
数据加工和基于 Primeton DI 的通用模板的通用配置项是一样的,有三类配置,包括基础信息、失败重试、超时机制。如下图所示:
配置项 | 默认值 | 说明 |
---|---|---|
作业名称 | 作业名称 | 当前已经创建/打开的数据加工作业名称。 |
任务优先级 | MEDIUM | 执行任务的优先级,共有五级: - HIGHEST:最高 - HIGH:高 - MEDIUM:中 - LOW:低 - LOWEST:最低 当 master 线程数不足时,级别高的流程在执行队列中会优先执行,相同优先级的流程按照先进先出的顺序执行。 |
Worker分组 | default | 该任务在指定的 worker 机器组里执行。默认是 Default,可以在任一 worker 上执行。 |
任务组 | 无 | 如果项目已经添加了任务组配置,则可以在下拉框中进行选择。 |
任务组优先级 | 0 | 数字越大表明任务执行的优先级越高。 |
环境名称 | 无 | 如果项目已经添加了任务组配置,则可以在下拉框中进行选择,在任务执行时,根据 worker 分组选择对应的环境,最终由该组中的 worker 节点执行环境后执行该任务。 |
命名参数 | 无 | 声明 key 和 default value。实际使用过程需要通过全局参数进行传参。 |
本地参数 | 无 | 调度的任务类型中自定义的参数,IN 是输入参数,OUT 是输出参数,需要使用${setValue(key=value)}的方式赋值。 |
处理集大小 | 10000 | 在进行ETL处理时,每次处理的数据量大小。增加数量可以减少事务次数,提高处理效率,但需要确保系统有足够的内存和处理能力。 |
失败重试次数 | 0 次 | 作业执行失败的重试次数 |
失败重试间隔 | 1 分钟 | 重试执行时的建个时间,单位为:分钟。 |
超时告警 | 不开启 | 设置是否启用超时告警的功能,开启后需要配置告警策略、超时时间。 |
告警策略 | 超时告警 | 两个选项: - 超时告警:当任务超过”超时时间”后,会发送告警邮件; - 超时失败:当任务超过”超时时间”后,任务执行失败。 |
超时时间 | 30分钟 | 设置作业执行的超时时间。 |
备注 | 无 | 该作业的描述。 |
# 通用配置-作业流
配置项 | 默认值 | 说明 |
---|---|---|
作业名称 | 作业名称 | 当前已经创建/打开的数据加工作业名称。 |
执行策略 | 串行优先 | 当对于同一个作业流定义,同时有多个作业流实例时,共有四种执行策略: - 串行优先:停止先生成的作业流实例,执行后生成的作业流实例; - 串行等待:串行执行作业流实例,后生成的作业流实例状态为串行等待; - 串行抛弃:抛弃后生成的作业流实例,后生成的作业流实例状态为停止; - 并行:并行执行作业流实例。 |
全局参数 | 无 | 作业流中定义的参数。整个作业流的所有任务节点都可使用全局参数 |
超时告警 | 不开启 | 设置是否启用超时告警的功能,开启后需要配置超时时间。 |
超时时间 | 30分钟 | 设置作业执行的超时时间。 |
备注 | 无 | 该作业流的描述。 |
# 通用配置-参数说明
DWS 共有以下六类参数:命名参数、本地参数、全局参数、启动参数、上游任务传递的参数、内置参数。
# 名词解释
命名参数:只存在【数据加工】类型及【通用模板】模型中处理引擎为Primeton DI的模型中。声明 key 和 default value。实际使用过程需要通过全局参数进行传参。
本地参数:dolphinscheduler 的任务类型中自定义的参数,IN 是输入参数,OUT 是输出参数,需要使用${setValue(key=value)}的方式赋值。
全局参数:dolphinscheduler的作业流中定义的参数。整个作业流的所有任务节点都可使用全局参数;
启动参数:作业流或任务试运行页面定义的变量。默认是将作业流的全局参数直接带出来,可修改。任务试运行时将命名参数默认带出来,可修改。
上游任务传递的参数:上游任务节点通过本地参数设置OUT输出传递过来的参数。
内置参数:系统内置的参数,可以在所有作业流及任务节点中直接使用的参数。
# 基础内置参数:
变量名 | 声明方式 | 含义 |
---|---|---|
system.biz.date | ${system.biz.date} | 日常调度实例定时的定时时间前一天,格式为 yyyyMMdd |
system.biz.curdate | ${system.biz.curdate} | 日常调度实例定时的定时时间,格式为 yyyyMMdd |
system.datetime | ${system.datetime} | 日常调度实例定时的定时时间,格式为 yyyyMMddHHmmss |
system.task.execute.path | ${system.task.execute.path} | 当前任务执行的绝对路径 |
system.task.instance.id | ${system.task.instance.id} | 当前任务实例的ID |
system.task.definition.name | ${system.task.definition.name} | 当前任务所属任务定义的名称 |
system.task.definition.code | ${system.task.definition.code} | 当前任务所属任务定义的code |
system.workflow.instance.id | ${system.workflow.instance.id} | 当前任务所属工作流实例ID |
system.workflow.definition.name | ${system.workflow.definition.name} | 当前任务所属工作流定义的名称 |
system.workflow.definition.code | ${system.workflow.definition.code} | 当前任务所属工作流定义的code |
system.project.name | ${system.project.name} | 当前任务所在项目的名称 |
system.project.code | ${system.project.code} | 当前任务所在项目的code |
# 衍生内置参数:
支持代码中自定义变量名,声明方式:${变量名}。可以是引用 "系统参数"。
这种基准变量为 $[...] 格式的,$[yyyyMMddHHmmss] 是可以任意分解组合的,比如:$[yyyyMMdd], $[yyyyMM],$[HHmmss], $[yyyy-MM-dd],$[yyyyMMdd-1]等。
也可以通过以下方式:
使用add_months()函数,该函数用于加减月份, 第一个入口参数为[yyyyMMdd],表示返回时间的格式 第二个入口参数为月份偏移量,表示加减多少个月
- 后 N 年:$[add_months(yyyyMMdd,12*N)]
- 前 N 年:$[add_months(yyyyMMdd,-12*N)]
- 后 N 月:$[add_months(yyyyMMdd,N)]
- 前 N 月:$[add_months(yyyyMMdd,-N)]
直接加减数字 在自定义格式后直接“+/-”数字
- 后 N 周:$[yyyyMMdd+7*N]
- 前 N 周:$[yyyyMMdd-7*N]
- 后 N 天:$[yyyyMMdd+N]
- 前 N 天:$[yyyyMMdd-N]
- 后 N 小时:$[HHmmss+N/24]
- 前 N 小时:$[HHmmss-N/24]
- 后 N 分钟:$[HHmmss+N/24/60]
- 前 N 分钟:$[HHmmss-N/24/60]
业务属性方式在自定义格式后直接“+/-”数字 支持日志格式:所有日期表达式,例如:yyyy-MM-dd/yyyyMMddHHmmss
- 当天:$[this_day(yyyy-MM-dd)],如:2022-08-26 => 2022-08-26
- 昨天:$[last_day(yyyy-MM-dd)],如:2022-08-26 => 2022-08-25
- 前(-)/后(+) N 月第一天:$[month_first_day(yyyy-MM-dd,-N)],如:N=1时 2022-08-26 => 2022-07-01
- 前(-)/后(+) N 月最后一天:$[month_last_day(yyyy-MM-dd,-N)],如:N=1时 2022-08-28 => 2022-07-31
- 前(-)/后(+) N 周的周一:$[week_first_day(yyyy-MM-dd,-N)],如:N=1 2022-08-26 => 2022-08-15
- 前(-)/后(+) N 周的周日:$[week_last_day(yyyy-MM-dd,-N)],如:N=1 2022-08-26 => 2022-08-21
# 上游任务传递给下游任务
DolphinScheduler 允许在任务间进行参数传递,目前传递方向仅支持上游单向传递给下游。目前支持这个特性的任务类型有:Shell、SQL、Python。
当定义上游节点时,如果有需要将该节点的结果传递给有依赖关系的下游节点,需要在【当前节点设置】的【本地参数】设置一个方向是 OUT 的变量。
上游传递的参数可以在下游节点中被更新,更新方法与“设置参数”相同。
如果定义了同名的传递参数,上游节点的参数将被覆盖。
注:若节点之间没有依赖关系,则局部参数无法通过上游传递。
# 参数优先级
当参数名相同时参数的优先级从高到低为:启动参数 > 本地参数 > 上游任务传递的参数 > 全局参数 > 命名参数。