我有一个很长的shell脚本,它运行并将结果存储在hive表中。该脚本需要很长时间才能完成。所有结果都保存在临时表中。有时脚本会因很长时间占用大量资源而被杀死或中断。截至目前,我只是从中断点复制粘贴查询并重新启动它。
我需要编写一个shell脚本,它可以检查所有临时表,并确定它在什么时候被中断,然后从那一点开始。
谢谢
答案 0 :(得分:0)
您可以通过shell脚本编写运行日志(通过文件)并跟踪已执行的查询。
在你的shell脚本中:
if [ -f "query1.complete" ]
then
echo "Query 1 already run. Skipping"
else
Run Query 1
touch query1.complete
end if
if [ -f "query2.complete" ]
then
echo "Query 2 already run. Skipping"
else
Run Query 2
touch query2.complete
end if
注意:此代码的语法可能不适合shell。
答案 1 :(得分:0)
因为在每个步骤中我都在创建一个表并在每个查询之前存储结果,所以我正在检查表是否存在。我已按以下方式实施了同样的工作
tname=$(hive -e "use db_name ; show table LIKE 'tablename' " -hiveconf mapred.job.queue.name=queuename )
if [ -z "$tname" ]
then
# write the next step
else
echo " table $tname already present hence skipping to next step "