Datastage 调度相关 dsjob

正在加载中...

试读已结束

继续阅读请 1 金币购买后下载

立即下载

资料简介:
DataStage有他自己的调度,不过个人总觉得修改起来不怎么方便。于是偏向于在Linux下用shell调度。最近项目需要,总结了一些,备忘。有什么不对的地方,欢迎指正。

1
dsjob语法

Command Syntax:

       dsjob [-authfile | -file | -domain -user -password -server ] | -domain [-user ] -server

                        []


Valid primary command options are:

       -run

       -stop

       -lprojects

       -ljobs

       -linvocations

       -lstages

        -llinks

       -projectinfo

       -jobinfo

       -stageinfo

       -linkinfo

       -lparams

       -paraminfo

       -log

       -logsum

       -logdetail

       -lognewest

       -report

       -jobid

       -import


Status code = -9999 DSJE_DSJOB_ERROR

2
脚本示例

dsjob所在的目录为(据实况而定):/mistel/IBM/InformationServer/Server/DSEngine/bin/dsjob

2.1
运行job

运行job,并把日志写在/DS/DSLogs/目录下,每天一个新的文件。

dsjob -run -mode NORMAL -jobstatus dstage1DD_Test  >> /DS/DSLogs/job_run_`date +%Y%m%d`.log

2.2
重置job

当job的状态为“为编译”,“终止”等时,需要重新编译才可以运行。

dsjob -run -mode RESET -wait  dstage1 DD_Test >>/DS/DSLogs/job_init_` date +%Y%m%d`.log


更多例子(dstage1项目下的 DD_Test job):

dsjob -run -mode NORMAL -jobstatus dstage1DD_Test  >> /DS/DSLogs/job_run_`date +%Y%m%d`.log

dsjob -report dstage1 DD_Test >>/DS/DSLogs/job_run_` date +%Y%m%d`.log


3
问题解决3.1
dsjob:command notfound

执行脚本时,可能出现dsjob命令未找到的错误提示,解决办法有几种。

3.1.1
解决一

即每次调用dsjob命令前,都把dsenv中的变量读取一次。命令如下:

source/mistel/IBM/InformationServer/Server/DSEngine/dsenv

3.1.2
解决二

让Linux每次登录时自动执行3.1.1中提到的脚本。即在/etc/profile.d/custom.sh中添加这段脚本。

3.2
较完整的脚本

/test/runJob.sh

#!/bin/bash

########################################

#

# runJob.sh 2012-08-19

# run a job with parameters

#

#######################################


# if the number of input parameters is lessthan 2,then output the help document and exit

if [ $# -lt 2 ] ; then

cat << HELP

runJob --run a job UASGE: runJobprojectName jobName jobParameters

EXAMPLE: runJob dsstage1 DD_Test -paramstartDT=20120819 -param endDT=20120819


HELP


       exit 0

fi


projectName="$1"

jobName="$2"

jobParameters="$3"


#echo $projectName

#echo $jobName

#echo $jobParameters


logdir=/DS/DSLogs       #directory to store logs

workdate=`date +%Y%m%d`


#logdir processing.If log folder notexists,create folder.

if [ -d $logdir ]; then

       echo "$logdir is exist,continue..."

else

       echo "$logdir is not exist,creating $logdir..."

       mkdir -p $logdir

fi



#job state processing.If job state is notfinished ok,then reset the job

jobsta=$($DSHOME/bin/dsjob -jobinfo$projectName $jobName 2>&1 | awk -F: '/^Job Status/{print $2}')

echo $jobsta

if [ "$jobsta" == " RUNFAILED (3)" -o "$jobsta" == " STOPPED (97)" ];then

       echo "Reset before run job $jobname"

       $DSHOME/bin/dsjob -run -mode RESET $projectName $jobName  >>${logdir}/job_init_` date +%Y%m%d`.log

       sleep 5

fi



#run a job

dsjob -run -mode NORMAL $jobparameters-jobstatus $projectName $jobName >> /DS/DSLogs/job_run_` date +%Y%m%d`.log


帖子看着格式有点乱,传个word文档看着方便点:

2012-09-17
页数9
浏览4532
下载33

已下载用户的评价7.64分

您还未下载该资料,不能发表评价;
查看我的 待评价资源
t476363562t476363562商业智能工程师bangke2017-01-16
有用
谢谢楼主分享
kingwangkingwang商业智能工程师前景科技有限公司2013-02-27
没用
支持楼主一个

贡献者

Breeze大数据工程师,保险集团
X社区推广