hiveql - Apache Hive 上的查询结果不一致(联合、分组依据、时间戳)
问题描述
我开发了一个 HQL 查询来检索两个表之间的差异。
use P00129;
set hive.execution.engine=tez;
set tez.queue.name=HQ_IST;
set hive.strict.checks.large.query = false;
set hive.mapred.mode=unstrict;
SELECT Step2.uv_id, Step2.date_statut, Step2.date_creation, Step2.No_Table_min, Step2.No_Table_max FROM (
SELECT Step1.uv_id, Step1.date_statut, Step1.date_creation, min(Step1.No_Table) as No_Table_min, Max(Step1.No_Table) as No_Table_max
FROM (
SELECT
1 as No_Table, uv_id, date_statut, date_creation from dev_{mytable}
UNION
SELECT
2 as No_Table, uv_id, date_statut, date_creation from {mytable}
) Step1
GROUP BY Step1.uv_id, Step1.date_statut, Step1.date_creation
) Step2
where Step2.No_Table_min = Step2.No_Table_max
ORDER BY Step2.uv_id
通常效果很好。但这里是我在特定桌子上遇到的问题
查询 全查询结果
step2.uv_id step2.date_statut step2.date_creation step2.no_table_min step2.no_table_max
1 35325195 2019-04-01 09:33:00.0 2019-04-01 10:21:31.0 1 1
2 35325195 2016-02-10 11:58:00.0 2019-04-01 10:21:31.0 2 2
现在让我们通过过滤结果中存在的 uv_id 来关注特定的 uv_id 关注 uv_id
没有一条线。等等......所以没有更多的区别?
好吧,显然,这个 uv_id 上的真实数据从来没有任何差异
_u1.no_table _u1.uv_id _u1.date_statut _u1.date_creation
1 1 35325195 2016-02-10 11:58:00.0 2019-04-01 10:21:31.0
2 2 35325195 2016-02-10 11:58:00.0 2019-04-01 10:21:31.0
如您所见,第一个查询为第一个表提供2019-04-01 09:33:00.0而不是2016-02-10 11:58:00.0。我不知道这里会发生什么。怎么了 ?
我们使用 Hive 2.3.0 最好的问候,
西蒙
解决方案
推荐阅读
- sql-server - 使用合并(更新/插入)和分组依据的 SQL 存储过程
- scala - 为什么迭代RDD后局部变量值不可见?
- django - 我们可以一次将树结构上传到django服务器吗?就像我们使用 git 一样?
- python - 如何删除字符串列表中列出的所有字符串,但只删除后跟空格的字符串
- javascript - 如何向 ajax api vue js 显示一些用户帖子
- c - linux c共享内存:为什么读写时内容的顺序是相反的
- php - PhpStorm 中的 Foreach 循环
- python - Full name month format in QCalendar sample
- visual-studio-2017 - 如何在 cocos creator 中构建桌面(Windows 10、8.1、8)
- asp.net-core - 使用服务器端 Blazor 动态填充选择列表的问题