获取hive表最新分区

在对时间要求比较高的流程中,往往会希望获取最新的分区数据。如果采用 select max(分区) as p from table_name; 获取分区,如果表很大时,时间代价很大;另外,如果直接从分区路径判断,虽然速度也会很快,当hive如何数据正在插入更新时被判断,极有可能会出现job还在进行,而判断已经结束,导致错误。

有一个可行的策略,对上一个任务做依赖调度,并且采用show partitions 输出所有的分区。利用shell语句,获得最大分区值。

(注:准实时情况下,一般对性能有要求,借助于shell脚本可以有效避免使用动态分区等操作)

脚本如下:
#!/bin/bash
set -e
nowtime=`date -d today "+%Y-%m-%d %H:%M"`
v_today=${nowtime:0:10}
partition="
set hive.cli.print.header=flase;
show partitions database_name.table_name;
"
#h=` hive -S -e  "$partition"`  #获取Hive表信息
v_partition=`hive -S -e  "$partition" | grep d="${v_today}" | sort | tail -n 1` #取最新的分区
h=${v_partition:15:2}

echo $h

猜你喜欢

转载自blog.csdn.net/levy_cui/article/details/78265422
今日推荐