我有一个 Package shell脚本,它读取输入文件并多次调用pig脚本。这在crontab上运行良好。但是,在尝试使用oozie引擎时不起作用。如何在oozie中实现循环。如果这不是正确的方法,有人能建议其他方法吗?我需要能够从输入文件中读取一些参数,然后为每一行(以及相应的read param)多次调用pig脚本或pig操作。
读行时
do
seedidprefix=$(echo $line |awk -v OFS='\t' '{print $3;}')
seedaudprefix=$(echo $line |awk -v OFS='\t' '{print $2;}')
adgrpid=$(echo $line |awk -v OFS='\t' '{print $1;}')
nwtype=$(echo $line |awk -v OFS='\t' '{print $4;}')
chainedseedid=$(echo $line |awk -v OFS='\t' '{print $5;}')
if [ $nwtype == "ADX" ]; then
hadoop jar pig.jar -param segid=${seedaudprefix} -param nw=${nwtype} -param date=${MODELDATE} -param seedid=${seedidprefix} -param audienceId=${adgrpid} -param chainedseedid=${chainedseedid} ${TOP_DIR}/histo_bkup_adx.pig
else
hadoop jar pig.jar -param segid=${seedaudprefix} -param nw=${nwtype} -param date=${MODELDATE} -param seedid=${seedidprefix} -param audienceId=${adgrpid} -param chainedseedid=${chainedseedid} ${TOP_DIR}/histo_bkup.pig
fi
done<${campaign_file}
1条答案
按热度按时间neskvpey1#
我遇到了一个类似的问题-我需要执行一个pig脚本多次。
对我有效的是在python中使用嵌入式pig([参见doc.][1])。
oozie工作流有一个pig操作,脚本指向python文件。还可以使用file标记标记需要重复执行的pig脚本,以便将其加载到工作目录(对于控制器(在您的示例中是shell脚本)从中读取输入的文件也是如此)。
oozie的剧本看起来像,
python脚本看起来像,
希望这有帮助。