Hive / Hue 视图从最新分区(年/月/日)返回所有行
Posted
技术标签:
【中文标题】Hive / Hue 视图从最新分区(年/月/日)返回所有行【英文标题】:Hive / Hue view return all rows from newest partition (year / month / day) 【发布时间】:2019-05-20 06:49:41 【问题描述】:我想创建一个只选择最新分区行的视图。我可以通过加入一个对值执行最大值的子查询来做到这一点,但这需要很长时间。我希望我可以将 show patitions 的结果加载到一个表中,然后以某种方式在 where 子句中使用它,但它变得一团糟。
有什么优雅的方法吗?
示例表 (customer_usage) 如下所示:
customer_id
event_id
load_year
load_month
load_day
total_usage
所有整数。
show partition customer_usage
返回:
> 2 load_year=2018/load_month=10/load_day=10
> 3 load_year=2018/load_month=10/load_day=11
> 4 load_year=2018/load_month=10/load_day=12
> 5 load_year=2018/load_month=10/load_day=13
> 6 load_year=2018/load_month=10/load_day=14
> 7 load_year=2018/load_month=10/load_day=15
> 8 load_year=2018/load_month=10/load_day=16
> 9 load_year=2018/load_month=10/load_day=17
表格格式是 hadoop 上的拼花。
【问题讨论】:
可以添加表结构和示例查询吗? 【参考方案1】:create or replace view vw_customer_usage
as select * from customer_usage
where load_day >= current_date - 7
如果您想要过去 7 天的数据。同样,为月份和年份添加 where 子句。
【讨论】:
【参考方案2】:您可以尝试使用 shell 脚本进行排序并获取最后一个分区,这将是您的最后一个分区。
hive -e "show partitions <table_name>" | sort -V | tail -1
我尝试使用具有 3 个分区(年、月、日)的表,并将字符串作为数据类型。上面的命令为我获取了最新的分区。
希望这会有所帮助:)
【讨论】:
以上是关于Hive / Hue 视图从最新分区(年/月/日)返回所有行的主要内容,如果未能解决你的问题,请参考以下文章
Hive:通过 Hue 插入表格产生的文件数量与 pyspark 不同