【发布时间】:2025-12-04 00:15:02
【问题描述】:
我有两个关于捕获hive脚本的返回状态/退出状态的问题。
- 在 unix 脚本中捕获返回状态
try2.hql
select from_unixtime(unix_timestamp(),'YYYY-MM-DD')
这在 shell 脚本 try1.sh 中被调用
echo "Start of script"
hive -f try2.hql
echo "End of script"
现在,我需要捕获 try2.hql 的返回状态。我该怎么做?
- 多个查询可用时的控制流
脚本 try3.hql 中有几个 Hive 查询
select stockname, stock_date from mystocks_stg;
select concat('Top10_Stocks_High_OP_',sdate,'_',srnk) as rowkey, sname, sdate, sprice, srnk from (
select stockname as sname, stock_date as sdate, stock_price_open as sprice,rank() over(order by stock_price_open desc) as srnk
from mystocks
where from_unixtime(unix_timestamp(stock_date,'yyyy-mm-dd'),'yyyymmdd') = '${hiveconf:batch_date}') tab
where tab.srnk <= 10;
try3.hql 在脚本中调用 try4.sh 并传递相关参数。
我的问题:在try3.hql中,如果第一个查询有任何错误,我必须返回shell脚本并中止程序,而不执行第二个脚本。
请提出建议。
【问题讨论】:
-
关于您的第二个问题,我认为使用 Oozie 可以帮助您以更好的方式定义查询工作流 (oozie.apache.org/docs/3.3.1/DG_HiveActionExtension.html)