返回配置单元脚本的状态

6mw9ycah  于 2021-06-26  发布在  Hive
关注(0)|答案(3)|浏览(307)

关于捕获配置单元脚本的返回状态/退出状态,我有两个问题。
在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中有几个配置单元查询

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;

在脚本try4.sh中调用try3.hql,并传递相关参数。
我的问题是:在try3.hql中,如果第一个查询中有任何错误,我必须返回shell脚本并中止程序,而不执行第二个脚本。
请建议。

iyfjxgzm

iyfjxgzm1#

对于问题的第1部分,可以更改脚本以退出配置单元的状态:

echo "Start of script"
hive -f try2.hql; hive_status=$?
echo "End of script"
exit $hive_status
x33g5p2x

x33g5p2x2#

echo“脚本开始”配置单元-f try2.hql配置单元\u状态=$?echo“脚本结束”echo$hive\u status>>$home/exit\u status.log
在home目录中,您将找到exit_status.log文件created,其中包含脚本的退出状态。

zlwx9yxi

zlwx9yxi3#

第二部分我有一个解决方案。
您知道吗,根据文档,“hive”cli被弃用为“beeline”?
hiveserver2(在hive0.11中引入)有自己的cli beeline,它是一个基于sqlline的jdbc客户机。由于新的开发集中在hiveserver2上,hive cli很快将被弃用,取而代之的是beeline(hive-10511)。
在beeline中,默认情况下,一旦脚本中出现错误,它就会立即停止。这由“force”参数控制。

--force=[true/false]            continue running script even after errors

顺便说一句,codeforester为第1部分提供的解决方案仍然适用于beeline。

相关问题