【发布时间】:2012-08-08 21:33:53
【问题描述】:
下面是我运行两个 Hive SQL 查询的 shell 脚本。哪个工作正常。
#!/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,total_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 语句工作不正常。
【问题讨论】:
标签: shell unix hadoop solaris hive