前言
- 问题描述:(a union all b)两段sql单独执行都有数据,但是union all之后无数据或者少数据
- 其他:a&b均为从orc格式的表中取数,且执行计划explain显示无reduce算子
- 初步推测:orc格式存储+无reduce导致(所以实验了row_number→可行;distinct→可行),数据准确了,但是不太理解
- 经问同事后,加上set hive.optimize.index.filter=false查询就可以了,问题的原因可能是数据加工过程中orc文件的一些元数据丢失了
解决
- 方法一
- set hive.optimize.index.filter=false 将元数据优化关掉
- 方法二
- 增加reduce操作
- 方法三
- 临时表解决