HDFS 下SHELL脚本监控表信息

SHELL脚本监控表信息,触发电话或者其他服务

 

#!/bin/sh
source /etc/profile
sleep 10

echo "v20180202"


data_date=`date -d "$today" +%Y%m%d --date="-1 day"`

function getPath()
{
 sql_text="select s.LOCATION
from dbs d
inner join tbls t on d.DB_ID = t.DB_ID
inner join partitions p on t.TBL_ID = p.TBL_ID
inner join sds s on p.SD_ID = s.SD_ID
where d.name='${1}'
and t.TBL_NAME='${2}'
and p.PART_NAME='${3}'
;"


 hdfs=`mysql -hsfbdp1mtstore-m.db.sfdc.com.cn -ucheck_user -psf123456 -Dsfbdp1mtstore -s -N -f -e "${sql_text}"`
 echo ${hdfs}
}

function check_hdfs()
{
 #通过元数据获取hdfs路径
 fullPath=`getPath "$1" "$2" "$3"`

 #检测分区是否已创建
 if [ ! $fullPath ]; then
   echo "#表$1.$2分区($3)不存在。"
  return 1
 fi

 #分区已创建的情况下 检测hdfs目录是否存在
 hadoop fs -test -d $fullPath
 if [ $? -ne 0 ] ;then
  echo "#"$fullPath" 不存在。"
  return 2
 fi

 #hdfs目录存在的情况下 检测hdfs大小
 fileSize=`hadoop fs -du $fullPath | awk '{sum += $1};END {print sum}'`
 if [ ! $fileSize ]; then
  fileSize=0
 fi
 echo "#HDFS详细路径:"$fullPath
 echo "#占用存储:"$fileSize
 if [ $fileSize -lt 10 ]; then
  echo "#HDFS详细路径:"$fullPath "--占用存储:"$fileSize
  return 3
 fi

 return 0
}


tablename_array=( 
"nmc_cost_item_cost_sts_day" 
"nmc_cost_cust_batch_dtl"
"nmc_cost_buss_overview_sts_day" 
"nmc_buss_overview_sts"
"nmc_incm_overview_progress_year" "nmc_incm_overview_progress_mon" "nmc_incm_prod_strct_year" "nmc_incm_prod_strct_mon"
"nmc_incm_cust_type_overview_year" "nmc_incm_cust_type_overview_mon" "nmc_incm_cllct_serv_overview_year" "nmc_incm_cllct_serv_overview_mon"
"nmc_incm_ce_overview_year" "nmc_incm_ce_overview_mon" "nmc_incm_item_1level_trend_mon" "nmc_incm_item_1level_trend_year" "nmc_incm_buss_sts_year"
"nmc_incm_buss_sts_mon" "nmc_incm_prod_main_prod_sts_year" "nmc_incm_prod_main_prod_sts_mon" "nmc_incm_prod_main_prod_cust_sts_year" "nmc_incm_prod_main_prod_cust_sts_mon"
"nmc_incm_cust_add_value_sts_year" "nmc_incm_cust_add_value_sts_mon" "nmc_incm_ce_prj_org_buss_sts_mon"
"nmc_incm_ce_prj_org_buss_sts_year" "nmc_incm_emp_buss_sts_mon" "nmc_incm_emp_buss_sts_year" "nmc_incm_cust_prj_incm_sts_mon" "nmc_incm_cust_prj_incm_sts_year" "nmc_incm_cust_cod_incm_sts_mon"
"nmc_incm_cust_cod_incm_sts_year" "nmc_incm_cust_mid_high_buss_sts_mon"
"nmc_incm_cust_buss_trend_mon" "nmc_incm_mh_cust_ana_mon" "nmc_incm_cust_chnl_ana_mon")
emp_code_list="01374213,01384134,01367683"
v_count=-1
f_total_count=0
s_total_count=0
while :
do
 v_count=$(($v_count+1))
 tablename=${tablename_array[$v_count]}
 echo "================================================"$tablename

 if [ ! -n "$tablename" ]; then
   echo "任务已完成"
   exit 0
 else
   echo "NOT NULL"
 fi

 check_hdfs "dm_nmc" $tablename "inc_day="${data_date}


 #不等于0时说明数据未准备好
 if [ $? -ne 0 ]; then
   f_total_count=$(($f_total_count+1))
   curl -l -H "Content-type: application/json" -X POST -d "{\"userId\": \"${emp_code_list}\",\"alertMode\":\"1,2,3\",\"content\":\"ERR数据异常,多谢!${tablename} inc_day=${data_date}分区为0 此信息为当前检测到的第 ${f_total_count} 个问题表\",\"subject\":\"XXXXX项目\"}" http://bdp-falcon-proxy.sf-express.com/falcon/notice/send 
   else
   echo "正常"
 fi

done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值