shell写json内容到临时文件
在写azkaban的flow时,对于依赖(dependsOn)的job可以传参,但是传参时必须是json格式,这个job就可以根据key=value获取到值进行下一步执行,本人记录一个案例(仅供自己记录)
#!/usr/bin/env bash cd $(dirname $0) jarPath=$(dirname $PWD)/jars/etl-1.0.2.jar mouth=$1 #执行月 mday=$2 #执行日期 fids=$3 #执行次数 step=$4 #间隔的秒数 #获取执行日 if [ "$logdate" = "0" ];then logdate=$(date -d "day ago"${logdate} +%Y%m%d) fi echo "{\"t_day\":\"$mday\"}" >> tmp.txt #json内容写入文件里 #开始执行任务 for fid in $fids;do sleep $step done tday=$(echo -n `cat tmp.txt`) #获取json内容 echo $tday >> ${JOB_OUTPUT_PROP_FILE} rm tmp.txt exit 0
flow里的内容
config: user.to.proxy: foo failure.emails: ***@qq.com concurrent: ignore mouth: $(new("org.joda.time.DateTime").minusDays(0).toString("yyyyMM")) day: $(new("org.joda.time.DateTime").minusDays(0).toString("yyyyMMddHHmmss")) #执行时间段 fid: "'0000 0030 0100 0130 0200 0230 0300 0330 0400 0430 0500 0530 0600 0630 0700 0730 0800 0830 0900 0930 1000 1030 1100 1130 1200 1230 1300 1330 1400 1430 1500 1530 1600 1630 1700 1730 1800 1830 1900 1930 2000 2030 2100 2130 2200 2230 2300 2330'" #等待30分钟 step: 1 queuenname: dev3 #t_day: $day jarReport: ./jars/report-1.0.2.jar mainReportClass: com.reportdata.orgdatareport.PaseOrcJob nodes: - name: etltask type: command config: command: sh -x etl_realtime/etltask.sh ${mouth} ${day} ${fid} ${step} - name: write_db type: command dependsOn: - etltask config: command: echo ......'${tday}'