hive jdbc抛出“运行查询时出错:java.lang.NullPointerException”

时间:2013-08-22 10:23:42

标签: hadoop hive

FROM cr_expanded_crcs_halen c INSERT OVERWRITE TABLE merge_result SELECT 'crcs', operator_id, instance_id, ts, user, application, actualconn, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL

我尝试使用上面的sql和jdbc将数据插入表merge_result,发现错误如下

Exception in thread "main" java.sql.SQLException: Error running query: java.lang.NullPointerException
at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:159)
at org.apache.hive.jdbc.Utils.verifySuccessWithInfo(Utils.java:147)
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:182)
at org.apache.solr.handler.dataimport.scheduler.HiveClient.main(HiveClient.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

但数据已成功插入。 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的错误。 不幸的是,我无法找到它失败的原因,但我找到了解决方法。 当你在一个选择语句中使用NULL这个单词时会出现问题,我认为这个丑陋的解决方案是用udf替换NULL的“null_value()”

我会用这个问题打开一个jira

@Description(name="null_value", value="_FUNC() return null")
@UDFType(deterministic=true, stateful=false)
public class NullValue extends GenericUDF {


    @Override
    public ObjectInspector initialize(ObjectInspector[] arguments)
            throws UDFArgumentException {
        return PrimitiveObjectInspectorFactory.javaStringObjectInspector;
    }

    @Override
    public Object evaluate(DeferredObject[] arguments) throws HiveException {
        return null;
    }

    @Override
    public String getDisplayString(String[] children) {
        return "keys_to_lower_"+children[0];
    }

}

谢谢, 加博