HIVE:逆序搜索

HIVE: Reverse order search

我有一个巨大的配置单元 table,其中可能有数百万行,我希望在其中基于列进行搜索(该列具有人类可读格式的时间)。基本上我希望只搜索最近插入的行(比如过去 1 小时内)。

当我执行 select * from table name 时,它总是从一开始就产生 returns。我必须比较每一行的时间,直到到达最近插入的行,这是一项耗时的任务。有什么办法可以从最后一行开始搜索,然后向相反方向移动,直到到达特定行?

附加信息:table 根据日期进行分区。

你应该使用一个 where 子句,包括一个 unix_timestamp() 函数和你用来存储时间的模式,并且只是 select 你感兴趣的那些行(在你的情况,那些时间戳大于 "now - one hour").

如果您使用的是字符串列,我看不出如何优化它。如果你可以修改你的 table ,那么最好有一个时间戳或日期列并创建一个索引来加速查询,但是如果你必须在字符串列上使用函数,索引将无济于事在这里,我很害怕。

代码或 SQL 无法优化糟糕的设计选择(将字符串列用于必须进行任何类型计算的数据,这只是一个糟糕的选择)。如果有一个日期列用来分隔 table,您可以添加一个子句以仅使用今天的日期(如果您对 "now - x hours" 感兴趣,则可以添加今天和昨天),仅此而已。