DATASTAGE:如何使用DSJOB并行运行更多实例作业

时间:2011-12-14 15:50:35

标签: parallel-processing wait datastage

我有一个问题。

我想在脚本中并行运行更多相同作业的实例:我有一个循环,我在其中使用dsjob调用作业而没有选项“-wait”和“{{1} }”。

我希望在脚本终止之前完成这些作业,但我不知道如何验证作业实例是否已终止。 我虽然使用wait命令,但它不合适。

提前致谢

3 个答案:

答案 0 :(得分:2)

首先,您应该确保作业编译选项“允许多个实例”选择。

第二

#!/bin/bash
. /home/dsadm/.bash_profile

INVOCATION=(1 2 3 4 5)

cd $DSHOME/bin
for id in ${INVOCATION[@]}
do
        ./dsjob -run -mode NORMAL -wait test demo.$id
done

项目 - 测试

工作 - 演示

$ id - 调用ID

shell scipt中的两行:保证环境路径可以正常工作。

答案 1 :(得分:0)

像你说的那样在没有-wait的情况下运行作业,然后循环运行dsjob -jobinfo并解析输出的作业状态为1或2.当所有作业都返回此状态时,它们都已完成。

但是,您可能会发现,在实际开始运行之前检查作业的状态,您可能会选择旧的状态。您可以通过在运行作业之前首先重置作业实例并等待状态“未运行”来解决此问题。

答案 2 :(得分:0)

  • 循环调用作业,无需等待或作业状态选项

  • 循环后
  • ,通过dsjob命令

  • 检查作业状态

示例 - dsjob -jobinfo projectname jobname.invocationid

  • 你也可以为此编写一个循环代码,并在

  • 下使用sleep命令
  • 根据工作状态编写进一步的逻辑

但是在不同的invoaction-id的帮助下创建Job Sequence以同时调用这个多实例作业是很好的

  • 如果序列作业处于同一过程中,则创建一个序列作业

  • 创建不同的序列或直接创建不同的脚本,以便在调用时同时触发这些作业并同时安排。

最佳选项创建标准通用脚本,根据输入命令行参数创建或获取值

示例 - 基于jobname + invocation-id

的日志文件

然后为不同的参数或调用安排相同的脚本。