首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在HIVE表中查找最新的分区

如何在HIVE表中查找最新的分区
EN

Stack Overflow用户
提问于 2016-03-19 07:12:45
回答 4查看 34.9K关注 0票数 17

我有一个分区表--有201个分区。我需要在这个表中找到最新的分区,并使用它来后期处理我的数据。查找所有分区列表的查询为:

代码语言:javascript
复制
use db;
show partitions table_name; 

我需要一个查询来查找这些分区中的最新分区。分区的格式为

代码语言:javascript
复制
ingest_date=2016-03-09

我尝试使用max(),这给了我错误的结果。我不想通过执行以下操作来遍历整个表

代码语言:javascript
复制
select max(ingest_date) from db.table_name; 

这将为我提供预期的输出。但是首先要消除分区的全部意义。

是否有更有效的查询来获取HIve表的最新分区?

EN

回答 4

Stack Overflow用户

发布于 2017-03-30 16:08:02

您可以使用"show partitions":

代码语言:javascript
复制
hive -e "set hive.cli.print.header=false;show partitions table_name;" | tail -1 | cut -d'=' -f2

这将给出"2016-03-09“作为输出。

票数 10
EN

Stack Overflow用户

发布于 2018-10-31 23:36:37

如果您希望避免在配置单元shell中运行上面建议的"show partitions“,可以对max()查询应用筛选器。这将避免进行完全扫描,并且结果应该相当快!

select max(ingest_date) from db.table_name where ingest_date>date_add(current_date,-3)将只扫描2-3个分区。

票数 8
EN

Stack Overflow用户

发布于 2019-12-12 16:15:38

如果您知道表在hdfs中的位置。这是最快的方法,甚至不需要打开蜂巢外壳。

您可以使用命令检查您的表在hdfs中的位置;

代码语言:javascript
复制
show create table <table_name>

然后

代码语言:javascript
复制
hdfs dfs -ls <table_path>| sort -k6,7 | tail -1

它将显示hdfs中的最新分区位置

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36095790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档