FAILED: NullPointerException null

问题描述

在阅读“基于Hadoop生态圈的数据仓库实践”中,碰到了一点问题记录下来。

  • 创建表
hive> CREATE TABLE cdc_time  
    > (    
    >  last_load date,  
    >  current_load date  
    > );  
OK
Time taken: 0.416 seconds
  • 插入数据,就会告知NPE。
hive> insert into cdc_time select date_add(current_date(), -1), date_add(current_date(), -1);
FAILED: NullPointerException null
  • insert into values 这种方式插入,则执行正常。
hive> insert into cdc_time values ('2016-10-11', '2016-10-11');
Query ID = training_20161013105050_4e520957-60b7-4e58-ae03-a5adb9afcf83
...
MapReduce Jobs Launched: 
Stage-Stage-1: Map: 1   Cumulative CPU: 2.15 sec   HDFS Read: 3423 HDFS Write: 90 SUCCESS
Total MapReduce CPU Time Spent: 2 seconds 150 msec
OK
Time taken: 33.227 seconds

解决方法

经查证,这是hive的一个bug。
如果sql是 insert into select...时,且不带 from
子句,则会报告NPE问题。

解决方案是:利用一张额外的表,并且只含有一行数据,或者限定where条件结果是一行数据。

hive> insert into cdc_time select date_add(current_date(), -1), date_add(current_date(), -1) from product where product_code = '1';
Query ID = training_20161013105858_3a2adeb4-98e2-48b2-9afc-6a05139a282c
Total jobs = 3
...
Stage-Stage-1: Map: 1   Cumulative CPU: 2.12 sec   HDFS Read: 4145 HDFS Write: 90 SUCCESS
Total MapReduce CPU Time Spent: 2 seconds 120 msec
OK
Time taken: 23.285 seconds

这个问题在hive1.2.0版本中修复。

https://issues.apache.org/jira/browse/HIVE-7641

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值