问题
多任务工作流使用键值参数是一个常用案例多任务并行运行是正常的,而每一项任务都可为同键有不同的参数值。关键值参数在代码内阅读并供每项任务使用
举例说,假设你有四大任务任务1,任务2,任务3并任务4工作流作业内表名参数键和参数值雇员,部门,位置定位并联系人.
运行作业时期望每项任务都有自己的参数应用代码使用Scala相伴对象时,你可能会注意到任务参数中有一个应用到所有其他任务,而不是应用每项任务各自的参数产生前后不一的结果
使用我们的例子,如果任务并行使用Scala相伴对象,则任何一个任务参数(例如,任务4参数类联系人)可能以表名方式传递到另外三大任务中 。
因果
相伴对象应用代码内时,伴生对象内有可变状态并同时修改自所有任务都在同一集群上运行以来,此类一次加载,所有任务都在同一ava虚拟机下运行
求解
通过应用其中一种解决办法可以缓解问题最佳选择取决于你的具体使用案例
- 顺序运行作业(任务中增加依赖性)。
- 将每项任务排入不同的集群
- 重写加载配置代码,以便明确创建新对象而不使用相伴对象共享状态