我有一个分区表--有201个分区。我需要在这个表中找到最新的分区,并使用它来后期处理我的数据。查找所有分区列表的查询为:
use db;
show partitions table_name; 我需要一个查询来查找这些分区中的最新分区。分区的格式为
ingest_date=2016-03-09我尝试使用max(),这给了我错误的结果。我不想通过执行以下操作来遍历整个表
select max(ingest_date) from db.table_name; 这将为我提供预期的输出。但是首先要消除分区的全部意义。
是否有更有效的查询来获取HIve表的最新分区?
发布于 2017-03-30 16:08:02
您可以使用"show partitions":
hive -e "set hive.cli.print.header=false;show partitions table_name;" | tail -1 | cut -d'=' -f2这将给出"2016-03-09“作为输出。
发布于 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个分区。
发布于 2019-12-12 16:15:38
如果您知道表在hdfs中的位置。这是最快的方法,甚至不需要打开蜂巢外壳。
您可以使用命令检查您的表在hdfs中的位置;
show create table <table_name>然后
hdfs dfs -ls <table_path>| sort -k6,7 | tail -1它将显示hdfs中的最新分区位置
https://stackoverflow.com/questions/36095790
复制相似问题