我有两个针对表运行的 Hive 查询,并且得到不同的结果,但我不完全确定原因。我想了解造成这种差异的原因。
查询1:
SELECT member_id, record_ts, record_type
FROM record
WHERE member_id = "M-01"
ORDER BY record_ts
查询2:
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
但这没有帮助
用于填充
record_staging
表的表 (record
) 使用 bucketing_version'='2'
,这会改变数据在 record_staging
表中的分布和组织方式。因此从那时起,record
表就使用不同的分桶策略进行填充。 record
表的分桶策略基于member_id 列,这就是它影响与member_id 相关的查询的原因。
这种转变导致记录的存储方式与以前不同,从而导致了我们观察到的数据问题。要解决此问题,我们只需更新
record
表以使用相同的存储策略。
ALTER TABLE record SET TBLPROPERTIES('bucketing_version'='2');