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 获取最新的分区数据

Hive 查询以从最新分区中选择行

从 HIVE 表中获取最新的分区

Hive:通过 Hue 插入表格产生的文件数量与 pyspark 不同

Linux 系统磁盘分区知识(2017年8月30日 11:47:02)

Linux分区重要知识介绍等(2017年8月30日 16:50:49)