元数据得到当前分区表最大分区

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shuimofengyang/article/details/87692869

背景:
公司数据没跑完,但又得出报表,只能取最近的!需要或取当前分区表最大的分区。这里使用的是利用元数据方式进行获得当前分区表最大分区的方式

写一个工具shell 脚本
#!/bin/bash
TABLE_NAME=$1
set -e
v_date=date -d yesterday +"%Y-%m-%d"
if [ -z ${TABLE_NAME} ]
then
echo ${v_date}
exit
fi
#数据库配置
BD_HOST=‘xxxxxx’
BD_NAME=‘root’
BD_PORT=‘3306’
BD_PWD=‘xxxxxxx’

MAX_PART_NAME=mysql -h$BD_HOST -u$BD_NAME -P$BD_PORT -p$BD_PWD -e "SELECT REPLACE(REPLACE(MAX(PART_NAME), 'l_date=', ''), 'dt=', '') AS '' FROM hive.PARTITIONS WHERE TBL_ID = ( SELECT TBL_ID FROM hive.TBLS WHERE DB_ID = ( SELECT DB_ID FROM hive.DBS WHERE NAME = SUBSTRING_INDEX('${TABLE_NAME}', '.', 1) ) AND TBL_NAME = SUBSTR('${TABLE_NAME}', LOCATE('.', '${TABLE_NAME}') + 1) );"
echo $MAX_PART_NAME

分析:这里不是最好的方式,但是是最万能的方式,利用元数据进行管理,可以对元数据做很多事,比如取当前分区最大的日期啊,获取当前分区最大的数据量呀!进行监控啊等等。本公司对于元数据的应用探索不是很多。自己也在摸索吧!

猜你喜欢

转载自blog.csdn.net/shuimofengyang/article/details/87692869
今日推荐