hiveql 中 max,min 的不稳定行为

Posted

技术标签:

【中文标题】hiveql 中 max,min 的不稳定行为【英文标题】:erratic behaviour of max,min in hiveql 【发布时间】:2015-06-01 13:37:53 【问题描述】:

我有一张这样的桌子

 - seek_video   2014-08-30 11:26:06 NULL    9   0
 - seek_video   2014-08-30 11:26:13 NULL    0   5
 - seek_video   2014-08-30 11:26:13 NULL    5.07195 0
 - seek_video   2014-08-31 11:05:24 NULL    330.94054   312
 - seek_video   2014-08-31 11:38:30 NULL    220 229
 - seek_video   2014-08-31 11:51:15 NULL    323.833366  345
 - seek_video   2014-08-31 11:51:16 NULL    346.223424  367
 - seek_video   2014-08-31 11:51:16 NULL    367.879296  380
 - seek_video   2014-08-31 11:51:17 NULL    381.625192  397
 - seek_video   2014-08-31 11:51:19 NULL    309.719715  323
 - seek_video   2014-08-31 11:34:33 NULL    440.885152  309
 - seek_video   2014-08-31 11:46:04 NULL    255.366326  268
 - seek_video   2014-08-31 11:46:05 NULL    268 290
 - seek_video   2014-08-31 11:46:07 NULL    290 309
 - seek_video   2014-08-31 11:44:34 NULL    231.77611   250
 - seek_video   2014-08-31 11:34:58 NULL    272 220
 - seek_video   2014-08-31 11:34:55 NULL    299 272
 - seek_video   2014-08-31 11:34:53 NULL    309 299
 - seek_video   2014-08-31 12:16:29 NULL    501.779488  489
 - seek_video   2014-08-31 12:26:32 NULL    551.362232  578
 - seek_video   2014-08-31 12:26:35 NULL    580.790634  625
 - seek_video   2014-08-31 12:26:37 NULL    627.838707  663
 - seek_video   2014-08-31 12:26:38 NULL    663.573627  649
 - seek_video   2014-08-31 12:26:39 NULL    650.194875  637
 - seek_video   2014-08-31 12:26:42 NULL    639.451178  621
 - seek_video   2014-08-31 07:58:51 NULL    9.075397    9
 - seek_video   2014-08-31 07:58:52 NULL    9   4
 - seek_video   2014-08-31 08:13:59 NULL    19.630148   27

我的查询

select max(old_time),max(new_time) from (
select event_type,time,currenttime,old_time,new_time 
from vi_log_table 
where *************) t1 ;

最后两列的最大值返回 9.075397 9 而不是 650.19 663 我对这种不可预测的行为感到很困惑。hive 在处理浮点值时是否存在问题。

按时间排序后编辑,值排序为

580.790634 625 650.194875 637 663.573627 649 627.838707 663 9.075397 9

【问题讨论】:

你能告诉我整个查询吗? 查看我的编辑,最后一行的值为 9.07 9 instaed of 627.83 663 【参考方案1】:

我找到了。

在 HIVEQL 中,我最后两行的数据类型只是字符串 使用

cast(new_time as float)

会给出正确的顺序

【讨论】:

以上是关于hiveql 中 max,min 的不稳定行为的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse/Gradle 多项目中库的不稳定行为 (UnsatisfiedLinkError)

iOS7 中 jQuery Mobile 滑动事件的不稳定行为

加载2个JSON事件源的不稳定行为(一个必须是后台事件)

MIN() MAX() BigQuery - 意外行为

GCC的std :: sort与lambdas的不稳定行为

GDELT不稳定性查询