获取hive表最新分区

来源:互联网 发布:西南大学网络教育官网 编辑:程序博客网 时间:2024/05/16 13:59
在对时间要求比较高的流程中,往往会希望获取最新的分区数据。如果采用 select max(分区) as p from table_name; 获取分区,如果表很大时,时间代价很大;另外,如果直接从分区路径判断,虽然速度也会很快,当hive如何数据正在插入更新时被判断,极有可能会出现job还在进行,而判断已经结束,导致错误。

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

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

脚本如下:
#!/bin/bashset -enowtime=`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

原创粉丝点击