大数据shell执行与代码执行效率比较
在开发中,一般来讲,我们都是通过代码开发,比如Java,Scala等来写mapreduce,spark编程等。然后如果使用shell编程来实现,效率会更高。很多企业为了效率,都采用这个方法。就一句话?后面木有了? suzjst 发表于 2018-3-21 10:01
就一句话?后面木有了?
这是1分钟小知识。有问题,可以回帖交流。
比如hive使用shell
#!/bin/bash
#######################################
#
# args format: ./test.sh tablename date
# dateformat: yyyymmdd
# 当参数只有表名,没有日期时,为全量加载
#######################################
source /etc/profile
#默认的SQL目录存放路径
sqlhome=/home/hadoop/shell/hive/sql
#数据库名称
db=safe
table=""
#获取日期参数
dt=$( date +"%Y%m%d" )
yesterday=$(date -d "1 days ago $dt " +%Y%m%d)
file0=$(basename $0)
file=${file0%.*}
echo "args number : $# "
if [ $# -eq 2 ] ; then
dt=$2
yesterday=$(date -d "1 days ago $dt " +%Y%m%d)
table=$1
hivefile=$sqlhome"/"$table".sql"
#echo "hivefile: $hivefile "
if [ ! -e $hivefile ] ; then
echo "++++++++++++++ file not exist!! [$hivefile] +++++++++++++"
exit 1
fi
elif [ $# -eq 1 ] ; then
dt=$( date +"%Y%m%d" )
yesterday=$(date -d "1 days ago $dt " +%Y%m%d)
table=$1
hivefile=$sqlhome"/"$table".sql"
if [ ! -e $hivefile ] ; then
echo "++++++++++++++ file not exist!! [$hivefile] +++++++++++++"
exit 1
fi
else
echo " +++++++++++++ command format error!! +++++++++++++ "
exit 1
fi
#运行hive的开始时间--时分秒
time1=`date "+%Y%m%d %T"`
start_time=$(date -d "$time1" +%s)
#hive --hiveconf table=$db.$table --hiveconf dt=$yesterday -f $hivefile
/opt/spark2.12/bin/spark-sql --hiveconf table=$db.$table --hiveconf dt=$yesterday -f $hivefile
result=$?
rt=$(date +"%Y%m%d %T")
#运行hive的结束时间
time2=`date "+%Y%m%d %T"`
end_time=$(date -d "$time2" +%s)
if [ $result -ne 0 ] ; then
failfile=$file"-"$dt.fail
cd ~/log/fail
rm -rf $failfile
touch $failfile
echo "$rt $file step error!! " >> ~/log/$file.log
exit 1
else
sucfile=$file"-"$dt.suc
cd ~/log/success
rm -rf $sucfile
touch $sucfile
a=`expr $end_time - $start_time`
echo "$rt$0step complete!! elapsed time [ $a ] econd " >> ~/log/$file.log
fi
明白了!感谢两位版主! shell脚本不熟,如果要用脚本的话,我会用Python来实现。
页:
[1]