Hive 查询结果和insert结果不一致问题排查

6 篇文章 0 订阅

Hive 查询结果和insert结果不一致问题排查

1.起因

​ 由于公司业务需要,在做近半年业务数据回补的时候,发现存在部分分区数据不符合业务需要,于是,很想当然的重跑脚本,结果发现该部分数据无法正确过滤;

2.问题描述

​ 在对某张表进行操作的时候,发现where条件后面的 xx is not null 条件不能生效,即 我采用 select的方式能够得到正确的结果,但是,insert时产生的结果却不一致。

3.解决过程

​ 在发现该问题后,首先觉得是is not null 的用法没有生效,于是,先将sql用查询的方式打印结果,发现是正确的,并且用insert到临时表的方式实验,发现结果也是正确的,那么奇怪了,同样的sql, query的方式结果正确,临时表结果也正确,只是在线上的脚本中失败?

​ 于是怀疑是union all的问题(业务需要,多个查询结果union all 到一个事件表中),在尝试各种方式后,发现union all也是正确的,最后尝试删除这张表重跑试试,结果居然成功了。

4.结论

​ 原来,insert overwrite 在插入分区表的已有分区的表时,如果待插入的查询结果为空,那么insert overwrite不会生效,即 它会保留旧有结果,然后给你造成你的sql 的哪个地方没有生效的假象。。。。

​ 这个问题暴露了我对hive 甚至 sql的基础掌握的情况还不够的事实,主要是踩得坑还不够多,还是要多锻炼呀。。。果然能力是练出来的。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值