當hive和hbase整合以後,執行hql,提示找不到類。

當hive和hbase整合以後,執行hive ql 啓動運行task時,提示java.lang.ClassNotFoundException,首先考慮下面這種狀況:html

在hive-site.xml中的hive.aux.jars.path屬性配置是否完整,首先最少的有zookeeper,hbase,hive-hbase-handler這三個包。java

而後查找提示不存在的class,看看不存在的class在哪一個包,而後配置進去。例若有一次提示:apache

java.lang.ClassNotFoundException: org.antlr.runtime.CommonTokenapp

經查找這個類是在antlr-runtime-3.4.jar包裏面,因此把antlr-runtime-3.4.jar包也配進hive.aux.jars.path中,以下:oop

<property>
 <name>hive.aux.jars.path</name>
 <value>file:///home/cdh/apps/hive-0.10.0-cdh4.7.0/lib/hive-hbase-handler-0.10.0-cdh4.7.0.jar,file:///home/cdh/apps/hive-0.10.0-cdh4.7.0/lib/hbase-0.94.15-cdh4.7.0.jar,file:///home/cdh/apps/hive-0.10.0-cdh4.7.0/lib/zookeeper-3.4.5-cdh4.7.0.jar,file:///home/cdh/apps/hive-0.10.0-cdh4.7.0/lib/antlr-runtime-3.4.jar</value>
</property>

最後發現不報錯了。因此相似的NotFoundException均可以使用這種方法試試。我還看到有人把guava-11.0.2.jar配置進去的,足以見得,hive.aux.jars.path屬性不是固定的,缺什麼就配置什麼。還有就是hive.aux.jars.path只能一個一個文件加進去,不能配置文件夾或者*.jar(通過試驗不能)。spa

找不到org.apache.hadoop.hbase.CompatibilityFactoryxml

這是由於缺乏hbase-hadoop2-compat這個包,可是當我引入這個包以後,仍是出錯,你還須要加上hbase-hadoop-compathtm

不知道爲何,這2個包都須要加上纔有用。而cdh的這個包沒有標明是2仍是1,不知道那個版本,因此2個版本的包都複製到了lib下。最後不報錯。blog

參考:Hive-0.13.1安裝配置
hadoop

相關文章
相關標籤/搜索