hive union all 数据丢失问题优化
2015-07-24 18:07
4207 查看
源语句:
然后查询:
结果只有0 1,然后重新执行上面的insert语句后再次查询,结果为0 2;反复尝试多次,结果都是0 1 或者0 2;很明显,数据并没有被全部插入到TEST3中。
百思不得其解,多番尝试后将语句优化如下:
执行优化后的语句,job数从9减少到5,执行时间大为减少;然后再次查询,结果就是0 1 2 3
虽然问题解决了,但是此时我还是不太能理解这个现象,等我弄明白了再补充记录到本文中,同时也欢迎各位读者指点迷津。
insert overwrite table TEST3 select '19' UNIT_ID, STAFF_CODE,STAFF_ID,STAFF_NAME, 0 LEVEL from TEST1 union all select tc.CENTER_ID UNIT_ID, th.STAFF_CODE,th.STAFF_ID,th.STAFF_NAME, 1 LEVEL from TEST2 tc inner join TEST1 th on tc.STAFF_ID=th.STAFF_ID union all select tc.STATION_ID UNIT_ID, th.STAFF_CODE,th.STAFF_ID,th.STAFF_NAME, 2 LEVEL from TEST2 tc inner join TEST1 th on tc.STAFF_ID=th.STAFF_ID union all select tc.GROUP_ID UNIT_ID, th.STAFF_CODE,th.STAFF_ID,th.STAFF_NAME, 3 LEVEL from TEST2 tc inner join TEST1 th on tc.STAFF_ID=th.STAFF_ID;
然后查询:
select distinct LEVEL from TEST3;
结果只有0 1,然后重新执行上面的insert语句后再次查询,结果为0 2;反复尝试多次,结果都是0 1 或者0 2;很明显,数据并没有被全部插入到TEST3中。
百思不得其解,多番尝试后将语句优化如下:
insert overwrite table TEST3 select '19' UNIT_ID, STAFF_CODE,STAFF_ID,STAFF_NAME, 0 LEVEL from TEST1 union all select tc.UNIT_ID, th.STAFF_CODE,th.STAFF_ID,th.STAFF_NAME, tc.LEVEL from( select STAFF_ID, CENTER_ID UNIT_ID, 1 LEVEL from TEST2 union all select STAFF_ID, STATION_ID UNIT_ID, 2 LEVEL from TEST2 union all select STAFF_ID, GROUP_ID UNIT_ID, 3 LEVEL from TEST2 ) tc inner join TEST1 th on tc.STAFF_ID=th.STAFF_ID;
执行优化后的语句,job数从9减少到5,执行时间大为减少;然后再次查询,结果就是0 1 2 3
虽然问题解决了,但是此时我还是不太能理解这个现象,等我弄明白了再补充记录到本文中,同时也欢迎各位读者指点迷津。
相关文章推荐
- pipe练习(暂存)
- HDU 1002--A + B Problem II【大数】
- Android 真机测试应用
- 注册页面的验证码的实现
- HDU 2005 第几天?
- 如何在Ubuntu 14.04上安装轻量级的Budgie桌面
- 自定义互斥变量
- ios官方示例demo
- MapView 和ViewPager Fragment切换黑屏问题解决方案
- 解决Spring MVC ResponseBody 乱码问题
- 关于Oracle的疑问
- 扩展欧几里德算法求逆元3
- Palindrome Linked List
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
- 150723培训心得(queue)
- Assertion failed (ni > 0 && ni == ni1) in collectCalibrationData
- HDU 1042--N! 【大数】
- android:layout_weight的含义
- 拓展欧几里德算法求逆元2
- ASP.NET Web API 特性