und*_*ood 11 hadoop hive apache-spark
我有一个分区表 - 有201个分区.我需要在此表中找到最新的分区,并使用它来处理我的数据.查找所有分区列表的查询是:
use db;
show partitions table_name;
Run Code Online (Sandbox Code Playgroud)
我需要一个查询来查找最新的这些分区.分区的格式
ingest_date=2016-03-09
Run Code Online (Sandbox Code Playgroud)
我尝试使用max(),这给了我一个错误的结果.我不想通过这样做遍历整个表格
select max(ingest_date) from db.table_name;
Run Code Online (Sandbox Code Playgroud)
这会给我预期的输出..但是杀死了第一个分区的重点.
是否有更高效的查询来获取HIve表的最新分区?
如果您想避免按照上面的建议在 hive shell 中运行“显示分区”,您可以将过滤器应用于 max() 查询。这将避免进行全表扫描,结果应该相当快!
select max(ingest_date) from db.table_name
where ingest_date>date_add(current_date,-3) 只会扫描 2-3 个分区。
您可以使用"show partitions":
hive -e "set hive.cli.print.header=false;show partitions table_name;" | tail -1 | cut -d'=' -f2
Run Code Online (Sandbox Code Playgroud)
这将为您提供"2016-03-09"作为输出.
| 归档时间: |
|
| 查看次数: |
16615 次 |
| 最近记录: |