☆☆☆★☆☆☆

唯有努力才能活成自己想要活成的样子

导航

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}'

 

posted on 2022-06-21 15:26  Yr-Zhang  阅读(579)  评论(0编辑  收藏  举报