Hive 配置单元hbase集成引发classnotfoundexception NULL::字符变化

Hive 配置单元hbase集成引发classnotfoundexception NULL::字符变化,hive,hbase,integration,classnotfoundexception,varying,Hive,Hbase,Integration,Classnotfoundexception,Varying,下面是这个链接 我正在尝试集成hive和hbase,我在hive-site.xml中有以下配置: <property> <name>hive.aux.jars.path</name> <value> file:///$HIVE_HOME/lib/hive-hbase-handler-2.0.0.jar, file:///$HIVE_HOME/lib/hive-ant-2.0.0.jar, file:///$HIVE_

下面是这个链接

我正在尝试集成hive和hbase,我在hive-site.xml中有以下配置:

<property>
  <name>hive.aux.jars.path</name>
  <value>
    file:///$HIVE_HOME/lib/hive-hbase-handler-2.0.0.jar,
    file:///$HIVE_HOME/lib/hive-ant-2.0.0.jar,
    file:///$HIVE_HOME/lib/protobuf-java-2.5.0.jar,
    file:///$HIVE_HOME/lib/hbase-client-1.1.1.jar,
    file:///$HIVE_HOME/lib/hbase-common-1.1.1.jar,
    file:///$HIVE_HOME/lib/zookeeper-3.4.6.jar,
    file:///$HIVE_HOME/lib/guava-14.0.1.jar
  </value>
</property>
然后在配置单元中创建外部表:

Hive> CREATE EXTERNAL TABLE hbase_test_table(key int, value string )
       STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
       WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key, pokes:value")
       TBLPROPERTIES ("hbase.table.name" = "ts:testTable",
       "hbase.mapred.output.outputtable" = "ts:testTable");
到目前为止还不错。但当我试图从测试表中选择数据时,引发了异常:

Hive> select * from hbase_test_table;
FAILED: RuntimeException java.lang.ClassNotFoundException: NULL::character varying
Error: Error while compiling statement: FAILED: RuntimeException java.lang.ClassNotFoundException: NULL::character varying (state=42000,code=40000)
我遗漏了什么吗

我正在用HBase 1.2.1尝试Hive 2.0.0好的,我发现,“NULL::character variabling”不是Hive的一部分,它来自Postgresql,因为我将它用作元存储的后端。但问题是Hive无法识别Postgresql中的此异常。我们为Hive 2.0.0提供了以下代码:

300: if (inputFormatClass == null) {
301:   try {
302:     String className = tTable.getSd().getInputFormat();
303:     if (className == null) {
304:       if (getStorageHandler() == null) {
305:         return null;
306:       }
307:      inputFormatClass = getStorageHandler().getInputFormatClass();
308:  } else {
309:  inputFormatClass = (Class<? extends InputFormat>)
310:    Class.forName(className, true, Utilities.getSessionSpecifiedClassLoader());
    }

对getOutputFormat()方法执行相同的操作,然后重新编译jar,就是这样。

最新版本的Hive是否修复了此错误?
300: if (inputFormatClass == null) {
301:   try {
302:     String className = tTable.getSd().getInputFormat();
303:     if (className == null) {
304:       if (getStorageHandler() == null) {
305:         return null;
306:       }
307:      inputFormatClass = getStorageHandler().getInputFormatClass();
308:  } else {
309:  inputFormatClass = (Class<? extends InputFormat>)
310:    Class.forName(className, true, Utilities.getSessionSpecifiedClassLoader());
    }
if (className == null || className.toLowerCase().startsWith("null::")) {