以下は、2つのHiveSQLクエリを実行しているシェルスクリプトです。これは正常に機能しています。
#!/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';"
私はこのような上記のシェルスクリプトを実行しています-
sh -x test.sh
問題文:-
私の最初のSELECTクエリを見ると、2つの列がOUTPUTとして表示されます。total_items_purchasedのSUMとtotal_items_missingormismatchのSUMです。そして、私の2番目のSELECTは、それらの列のパーセンテージを示します。
上記を使用して、これら3つの詳細をメールで送信する必要がありますSHELL SCRIPT
。基本的に私はこれらの3つのことをメールで送る必要があります。
最初のクエリから-送信する必要があります-
total_items_purchased and total_items_missingormismatch
そして2番目のクエリから-私は送信する必要があります-
Percentage that I am calculating.
電子メールは、このようなもの、またはより良いアプローチのようなものにすることができます-
Total Items Purchased:- Some Number
Total Items MissingorMismatch:- Some Number
Error Percentage:- Some Percentage
任意の提案をいただければ幸いです。
アップデート:
シェルスクリプトに変更を加えた後、以下のシェルスクリプトを実行しました-
#!/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:
スクリプトのいくつかの部分は正常に機能していますが、最後の3つのechoステートメントは正常に機能していないと思います。