Hive获取最新分区

为了增加代码健壮性,有时候获取数据表分区不能写死固定的时间,或者sysdate(-1)。

因此需要获取表的最新分区,然后取该分区的数据。

1、show partitions table_name;

只能看有啥分区,不能应用;

2、select dt from table_name where dt >= sysdate( - 10) group by dt order by dt desc limit 1;

限制一段时间,先分组group by,再排序order by desc,最后输出limit 1,测试速度略慢于方法3;

3、select max(dt) from app.p_sku_to_age_4cate where dt >= sysdate( - 10)

限制一段时间,取分区最大的,主要缺点是需要扫描全部分区的数据进行比较,但代码简便;

4、python 调shell 再调hive 执行showpartitions。

import subprocess
def get_table_info(last_day, table_name):
    cmd = """
        hive -e "show partitions """+table_name+"""" | sort -n -r | awk '{print $1}'
        """
    info = subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True)
    dtinfo=info.communicate()[0]
    dtlist=str(dtinfo,encoding = "utf-8").split("\n")
    pt=dtlist[0].split("/")
    dt=[dt.split("=")[1] for dt in pt if 'dt=' in dt][0]
    return dt[:10]
pv_dt = get_table_info(last_day, "table_name")
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORACLE自学教程 --create tabletestone ( id number, --序号usernam...
    落叶寂聊阅读 1,150评论 0 0
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,539评论 0 13
  • 课程性质:初级汉语课 教学时间:2017.9.26 10:10--11:45 教学对象:南非/大学生 教学人数:3...
    沈小牵阅读 176评论 0 0
  • 红俊你走了,漫漫人生路,从此不再有你。我们从18岁开始相识,同窗同事到闺蜜。我这辈子最值得骄傲的事情就是有你这样的...
    lily沈丽云阅读 829评论 2 6
  • 一、很高兴认识你 如果没有去那里,没有遇见那家店的老板,这个暑假一定和往常一样,一样无聊、一样乏味。 还没放暑假的...
    李佳人阅读 365评论 0 5