下面是我的shell脚本,我正在运行两个Hive SQL查询。哪个工作正常。
#!/bin/bash
DATE_YEST_FORMAT2=`perl -e 'use POSIX qw(strftime); print strftime "%Y%m%d",localtime(time()- 3600*96);'`
echo $DATE_YEST_FORMAT2
hive -e "
set mapred.job.queue.name=data-technology;
SELECT SUM(total_items_purchased), SUM(total_items_missingormismatch) from lip_data_quality where dt='$DATE_YEST_FORMAT2';
SELECT 100 * SUM(total_items_missingormismatch*1.0) / SUM(total_items_purchased) FROM lip_data_quality where dt='$DATE_YEST_FORMAT2';"
我正在运行上面的shell脚本 -
sh -x test.sh
问题陈述: -
如果你看到我的第一个SELECT查询,它会给我两列作为OUTPUT,sum_items_purchased的SUM和total_items_missingormismatch的SUM。我的第二个SELECT将给出这些列的百分比。
我需要使用上面的SHELL SCRIPT
在电子邮件中发送这三个详细信息。基本上我需要在电子邮件中发送这三件事。
从第一个查询 - 我需要发送 -
total_items_purchased and total_items_missingormismatch
从第二个查询 - 我需要发送 -
Percentage that I am calculating.
电子邮件可以是这样或更好的方法 -
Total Items Purchased:- Some Number
Total Items MissingorMismatch:- Some Number
Error Percentage:- Some Percentage
任何建议都将受到赞赏。
更新
在我的Shell脚本中进行更改后,我运行了下面的shell脚本 -
#!/bin/bash
QUERY1 = `hive -e "
set mapred.job.queue.name=data-technology;
SELECT SUM(total_items_purchased), SUM(total_items_missingormismatch) from lip_data_quality where dt='20120804';`
QUERY2 = `hive -e "
set mapred.job.queue.name=data-technology;
SELECT 100 * SUM(total_items_missingormismatch*1.0) / SUM(total_items_purchased) FROM lip_data_quality where dt='20120804';"`
echo "Total items purchased: `echo $QUERY1 | awk '{print $1}'`"
echo "Total Items MissingorMismatch: `echo $QUERY1 | awk '{print $2}'`"
echo "Error Percentage: $QUERY2"
我得到的输出我不认为是对的吗?脚本出了什么问题?当我运行SunOS时:
bash-3.00$ sh -x emailtest.sh
+ hive -e
set mapred.job.queue.name=data-technology;
SELECT SUM(total_items_purchased), SUM(total_items_missingormismatch) from lip_data_quality where dt='20120804';
+ QUERY1 = 3443837 448750
emailtest.sh: QUERY1: not found
+ hive -e
set mapred.job.queue.name=data-technology;
SELECT 100 * SUM(total_items_missingormismatch*1.0) / SUM(total_items_purchased) FROM lip_data_quality where dt='20120804';
+ QUERY2 = 13.030523802375084
emailtest.sh: QUERY2: not found
+ awk {print $1}
+ echo
+ echo Total items purchased:
Total items purchased:
+ awk {print $2}
+ echo
+ echo Total Items MissingorMismatch:
Total Items MissingorMismatch:
+ echo Error Percentage:
Error Percentage:
脚本中很少有部分工作正常,但我认为最后三个echo语句工作不正常。
答案 0 :(得分:1)
我的解决方案,无可否认是老派,将使用awk通过将以下内容附加到您的脚本来解析输出:
QUERY1=`hive -e " set mapred.job.queue.name=hdmi-technology; SELECT SUM(total_items_purchased), SUM(total_items_missingormismatch) from lip_data_quality where dt='$DATE_YEST_FORMAT2';` QUERY2=`hive -e " set mapred.job.queue.name=hdmi-technology; SELECT 100 * SUM(total_items_missingormismatch*1.0) / SUM(total_items_purchased) FROM lip_data_quality where dt='$DATE_YEST_FORMAT2';"` echo "Total items purchased: `echo $QUERY1 | awk '{print $1}'`" echo "Total Items MissingorMismatch: `echo $QUERY1 | awk '{print $2}'`" echo "Error Percentage: $QUERY2"
这些天,我会在Python中做这样的事情。但是Awk仍然有它的用途。