本文档介绍了调度标准包中的概览报表(LHMPackageOverview.xls)的进阶能力,允许用户通过编辑表格修改工作流、节点的部分调度属性,以及实现黑名单操作。
1 什么是LHM调度标准包?
调度标准包是LHM调度迁移链路的中间产物,是为实现N2N调度迁移而建立的调度信息统一描述层(标准数据结构)。
标准包中包含一个概览报表文件(LHMPackageOverview.xls),是对转换结果任务流、节点、资源、函数、数据源基本信息的汇总展示。
2 概览报表进阶能力
LHM允许用户通过编辑概览报表以修改部分常用调度属性,以及实现黑名单操作。
2.1 操作方式
操作方式如下:
概览报表进阶操作将在调度迁移的下一阶段的初始化中生效:
1、对导出工具输出包修改后,调度转换工具会在初始化时获取修改内容并使之生效;
2、对转换工具输出包修改后,目标端导入工具会在初始化时获取修改内容并使之生效。
2.2 修改工作流调度属性
报表中工作流的部分属性被允许更改,允许更改的字段以蓝色字体标识。
属性名 | 说明 | 类型 | 取值 | 样例 |
ID | 工作流ID | 只读 | / | 16373885761152 |
名称 | 工作流名称 | 只读 | / | TestWorkflow2 |
路径 | 工作流所在路径 | 只读 | / | ds3_0410 |
责任人 | / | 读写 | / | admin |
备注 | / | 读写 | / | 这是一个测试工作流123 |
调度参数 | 工作流级参数 | 读写 | JSON格式;允许修改、增加、删除 | {"prop1":"value1","prop2":"value2"} |
调度信息 | Cron表达式 | 读写 | 符合Cron表达式规范 | 00 00 * * * * ? |
实例生成方式 | / | 读写 | IMMEDIATELY: 发布后即时生成实例 T_PLUS_1: T+1次日生成实例。 | T_PLUS_1 |
包含节点的个数 | / | 只读 | / | 3 |
源端ID(若任务流由迁移而来) | 高级功能 | 只读 | / | / |
按节点类型分别统计(多列) | / | 只读 | / | / |
2.3 修改节点调度属性
报表中节点的部分属性被允许更改,允许更改的字段以蓝色字体标识。
属性名 | 说明 | 类型 | 取值 | 样例 |
ID | / | 只读 | / | 16373881518720 |
名称 | / | 只读 | / | Node1 |
责任人 | / | 读写 | / | admin |
备注 | / | 读写 | / | 这是一个测试节点123 |
所属WorkflowID | / | 只读 | / | 16373885761152 |
所属WorkflowName | / | 只读 | / | TestWorkflow2 |
类型 | / | 读写 | / | SQL |
相关数据源类型 | / | 读写 | / | MYSQL |
相关数据源 | / | 读写 | / | test_mysql_123 |
调度参数1 | 工作流级参数 | 读写 | JSON格式;允许修改、增加、删除 | {"prop1":"value1","prop2":"value2"} |
脚本参数提取1 | 脚本中的参数引用 | 读写 | JSON格式;允许修改、增加、删除 | {"$(param1)":"${Param1}"} |
调度信息 | Cron表达式 | 读写 | 符合Cron表达式规范 | 00 00 * * * * ? |
实例生成方式 | / | 读写 | IMMEDIATELY: 发布后即时生成实例 T_PLUS_1: T+1次日生成实例。 | T_PLUS_1 |
调度类型 | / | 读写 | NORMAL: 正常调度 PAUSE: 暂停调度 SKIP: 空跑调度 | NORMAL |
重跑类型 | / | 读写 | ALL_ALLOWED: 运行成功或失败后皆可重跑 ALL_DENIED: 运行成功或失败后皆不可重跑 FAILURE_ALLOWED: 运行成功后不可重跑,运行失败后可以重跑 | ALL_ALLOWED |
调度资源组 | DataWorks调度资源组 | 读写 | DataWorks通用/调度资源组ID | Serverless_res_group_580581087550304_692540198941344 |
计算CU | DataWorks计算CU | 读写 | Float型 | 0.25 |
镜像 | DataWorks镜像 | 读写 | 镜像ID | System_emr_datalake_5151_ 20240731 |
数据集成资源组(仅DI) | DataWorks集成资源组 | 读写 | DataWorks通用/集成资源组ID | Serverless_res_group_580581087550304_692540198941344 |
数据集成CU(仅DI) | DataWorks数据集成CU | 读写 | Float型 | 0.5 |
源端ID(若任务流由迁移而来) | 高级功能 | 只读 | / | / |
注脚1: 使用方式详见章节 2.2.1 节点与代码中的变量处理。
2.3.1 节点与代码中的变量处理
2.3.1.1 不同调度引擎在节点变量上的差异
不同调度引擎调度变量的使用方式存在差异,在调度转换中需要进行处理,差异主要有以下三类:
· 调用格式差异
常见的调用格式有${param}、$[param]、$(param)。
DataWorks中节点变量以${}、$[]为主,在转换时,需对节点代码中引用变量的方式进行处理。
· 调度引擎内置变量差异
调度引擎提供了多种内置变量,常见的是时间变量,此外也提供一些诸如${workflowName}、${taskName}的变量。不同调度引擎提供的内置变量存在差异,时间变量的格式也可能存在差异。在转换时需要进行替换处理。
另外,DataWorks的内置变量需要在节点参数表中进行定义后方可使用。而有些调度引擎,如WeData,允许用户在节点代码中直接使用内置变量。在迁移至DataWorks时需要将这些变量添加到节点变量中。
· 多级参数引用差异
Project级、Workflow级、Node级变量的多级引用规则可能存在差异。
2.3.1.2 利用概览报表改造节点与代码中的变量
在迁移场景中,源端和目标端调度引擎节点变量存在大量差异。工具提供了一项通用能力,允许用户以简单易用的方式完成变量处理。用户需在调度转换完成后、调度导入前进行处理。
· 节点变量补全
工具支持自动识别节点代码中引用的变量,并与节点已有变量进行对比。当节点变量中找不到该变量时,自动在表格参数列中预设该参数。
识别节点代码中变量引用的方式是:搜索代码中被${}、$[]、$()包裹的子串,并进行去重。
以是一个示例:脚本中存在三个疑似变量的子串param1、param2、param3,且节点自定义变量表中不存在相应变量。
工具自动识别了这些子串,并提示在概览报表中:
工具会自动创建变量名,用户可通过编辑表格为这些变量补充值。若存在误识别的变量,删除或放置不管即可。
表格也允许通过编辑额外增加节点参数(即使工具没有预先创建变量名)。
· 节点代码中变量调用方式替换
由于调用方式存在差异,需要对节点代码中引用变量的方式进行替换。
以下图为例,节点代码中存在param1、param2、param3三个疑似参数的子串。
工具自动识别了这些子串,并构建了一个Map。用户可以通过更改这个Map,完成节点代码中变量调用方式的替换。
Key值(冒号前)是节点代码中的原始串,Value值(冒号后)是待替换的串。
例如,若需要将原先$()和$[]统一替换为${},可将该单元格修改如下:
{"${param1}":"${param1}","$[param2]":"${param2}","$(param3)":"${param3}"}
替换方式是使用String.replace(CharSequence target, CharSequence replacement)方法,正则不会生效。
用户也可以通过编辑改单元格对对代码中的变量名进行替换。注意,修改变量名需同时更改节点调度变量表。例如,可以将param1替换为P1。
2.4 工作流黑名单
报表允许通过删除工作流子表中的行,使得工具跳过这些工作流的处理(工作流黑名单)。
注意!若工作流存在相互依赖关系,相关联的工作流需要同批次处理,不可通过黑名单进行分割。分割会产生异常!