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

Parallel processing DATASTAGE:如何使用DSJOB并行运行更多实例作业,parallel-processing,wait,datastage,Parallel Processing,Wait,Datastage,我有个问题 我想在一个脚本中并行运行同一个作业的更多实例:我有一个循环,在这个循环中,我使用dsjob调用作业,而不使用选项“-wait”和“-jobstatus” 我希望作业在脚本终止之前完成,但我不知道如何验证作业实例是否终止。 我想使用wait命令,但它不合适 首先,您应该确保作业编译选项“允许多个实例”的选择 第二: #!/bin/bash . /home/dsadm/.bash_profile INVOCATION=(1 2 3 4 5) cd $DSHOME/bin for id

我有个问题

我想在一个脚本中并行运行同一个作业的更多实例:我有一个循环,在这个循环中,我使用
dsjob
调用作业,而不使用选项“
-wait
”和“
-jobstatus

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


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

第二:

#!/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中的两行代码:保证环境路径可以工作。

按照您所说的方式运行作业,而不使用-wait,然后循环运行dsjob-jobinfo,并解析作业状态为1或2的输出。当所有作业返回此状态时,它们都已完成

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

  • 不使用等待或作业状态选项调用循环中的作业

  • 循环后,通过dsjob命令检查作业状态

示例-dsjob-jobinfo项目名称jobname.invocationid

  • 您还可以为此编写多个循环,并在该循环下使用sleep命令

  • 根据作业的状态写下您的进一步逻辑

但是,创建作业序列以便在不同invoaction ID的帮助下同时调用此多实例作业是很好的

  • 如果它们处于同一进程中,则创建序列作业

  • 创建不同的序列或直接创建不同的脚本,以使用调用ID和调度同时触发这些作业

最佳选项创建一个标准的通用脚本,在该脚本中,将根据输入命令行参数创建每个对象或获取值

示例-基于jobname+调用id的日志文件

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