talend - Talend - 将 globalMap 变量传递给 Job 中的所有 subJobs
问题描述
将 globalMap 变量传递给 Job 中的所有 subJobs 我正在处理共享 60% 相同代码的多个作业。每次我必须更新某些东西时,我最终都会在所有工作中更改相同的东西。
这是它的外观:
Existing Job 1 - Node ETV -> Node 1 -> Node 2 -> Node 3 -> Node ABC -> Node 5 -> Node 6
Existing Job 2 - Node KJL -> Node 1 -> Node 2 -> Node 3 -> Node MNP -> Node 5 -> Node 6
Existing Job 3 - Node LDG -> Node 1 -> Node 2 -> Node 3 -> Node XYZ -> Node 5 -> Node 6
我想让它们都像这样工作:
创建子作业 1,即节点 1 -> 节点 2 -> 节点 3 的组合
和
创建子作业 2,它是节点 5 -> 节点 6 的组合
然后重写作业如下:
Updated Job 1 - Node ETV -> Sub Job 1 -> Node ABC -> Sub Job 2
Updated Job 2 - Node KJL -> Sub Job 1 -> Node MNP -> Sub Job 2
Updated Job 3 - Node LDG -> Sub Job 1 -> Node XYZ -> Sub Job 2
问题是,显然 globalMap 的范围是有限的,而且绝不是“全球性的”。在子作业 1 中无法访问节点 ETV 中创建的值。似乎无法超越这件事。必须有在作业中随处可访问的创建变量。
解决方案
您可以使用上下文变量而不是全局变量。当您使用 tRunJob 调用您的子作业时,您可以选中“传输整个上下文”选项。这样,您的子作业将自动从作业中检索上下文值。您只需在所有作业中声明具有相同名称的上下文变量。
推荐阅读
- laravel - Laravel 验证值范围
- docfx - 由于路径问题,无法启动我的 docfx 项目
- vb.net - VB.Net 上的 Emgu.CV 慢速图片框图像
- java - 未能执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile
- assembly - GNU 汇编中的“_main”和“main”有什么区别?
- python-3.x - python中的Einsum
- r - 比赛球员统计数据加到 R 中的球队统计数据
- java - 在使用命令行参数创建的数组中添加列
- arduino - ESP8266 ESP-01 在 Arduino IDE 串行监视器中不显示来自服务器的数据
- html - ng-multiselect-dropdown 总是被解雇