分享

大数据shell执行与代码执行效率比较

在开发中,一般来讲,我们都是通过代码开发,比如Java,Scala等来写mapreduce,spark编程等。然后如果使用shell编程来实现,效率会更高。很多企业为了效率,都采用这个方法。

已有(5)人评论

跳转到指定楼层
suzjst 发表于 2018-3-21 10:01:56
就一句话?后面木有了?
回复

使用道具 举报

howtodown 发表于 2018-3-21 10:18:40
suzjst 发表于 2018-3-21 10:01
就一句话?后面木有了?

这是1分钟小知识。有问题,可以回帖交流。
回复

使用道具 举报

pig2 发表于 2018-3-21 15:52:05
比如hive使用shell
[mw_shl_code=bash,true]#!/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  $0  step complete!!   elapsed time [ $a ] econd " >> ~/log/$file.log
fi
[/mw_shl_code]
回复

使用道具 举报

suzjst 发表于 2018-3-22 09:25:10
明白了!感谢两位版主!
回复

使用道具 举报

tatata000 发表于 2018-3-29 12:32:58
shell脚本不熟,如果要用脚本的话,我会用Python来实现。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条