hadoop 两个有时间分割条件和没有时间分割条件的Hive函数结果的差异

inb24sb2  于 6个月前  发布在  Hadoop
关注(0)|答案(1)|浏览(134)

我对一个表运行了两个Hive查询,得到了不同的结果,但我不完全确定为什么。我想了解这种差异的原因。
查询1:

SELECT member_id, record_ts, record_type
FROM record
WHERE member_id = "M-01"
ORDER BY record_ts

字符串
疑问二:

SELECT member_id, record_ts, record_type
FROM record
WHERE member_id = "M-01"
AND time_partition >= "2023-01"
ORDER BY record_ts


在这两个查询中,我都从“record”表中选择记录,其中“member_id”等于“M-01”,并且我按“record_ts”列对结果进行排序。但是,查询2包含一个附加条件,该条件基于“time_partition”列过滤记录。
我的问题:为什么第一个查询产生空结果,而第二个查询返回结果?这两个Hive查询之间的结果差异的原因是什么?
我很感激任何能帮助我更好地理解这种行为的见解或解释。谢谢!
我尝试添加hive.fetch.task.conversion=none,但没有帮助

oyxsuwqo

oyxsuwqo1#

table(record_staging)用于填充record表使用bucketing_version'='2',这改变了数据在record_staging表中的分布和组织方式。因此从那时起,record表是使用不同的分区策略填充的。record表的分区策略基于"这就是为什么它会影响与member_id相关的查询。
这种变化导致记录的存储方式与以前不同,导致了我们观察到的数据问题。为了解决这个问题,我们只需要更新record表以使用相同的bucketing策略。

ALTER TABLE record SET TBLPROPERTIES('bucketing_version'='2');

字符串

相关问题