Hadoop Hive集成INSERT查询

时间:2013-04-10 09:08:00

标签: hadoop hbase hive

我是hadoop新手,我正在尝试这个教程: https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration

1.使用参数成功启动配置单元: hive --auxpath /cygdrive/c/Hadoop/hive-0.9.0/lib/hive-hbase-handler-0.9.0.jar,/cygdrive/c/javaHBase/hbase-0.94.6/hbase-0.94.6。 jar,/ cygdrive / c / Hadoop / hive-0.9.0 / lib / zookeeper-3.4.3.jar,/ cygdrive / c / Hadoop / hive-0.9.0 / lib / guava-r09.jar -hiveconf hbase.master本地主机=:60010

2.启动hbase成功。

3.“CREATE TABLE hbase_table_1”已成功完成

4.我通过命令列表和显示表进行了验证,一切正常

这是我的问题 “INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo = 98;”

我收到此错误消息在“htp:// localhost:50060 / tasklog?attempttid ...”中搜索

java.lang.ClassNotFoundException: org/apache/hadoop/hive/hbase/HBaseSerDe
Continuing ...
java.lang.ClassNotFoundException:
org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat
Continuing ...
java.lang.ClassNotFoundException:
org/apache/hadoop/hive/hbase/HiveHBaseTableOutputFormat
Continuing ...
java.lang.NullPointerException
Continuing ...
java.lang.NullPointerException
 at
org.apache.hadoop.hive.ql.exec.FileSinkOperator.initializeOp(FileSinkOperator.java:280)
at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
    at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:433)
    at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:389)
    at org.apache.hadoop.hive.ql.exec.SelectOperator.initializeOp(SelectOperator.java:62)
    at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
    at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:433)
    at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:389)
    at org.apache.hadoop.hive.ql.exec.FilterOperator.initializeOp(FilterOperator.java:78)
    at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
    at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:433)
    at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:389)
...

我试图将hive jar复制到hbase install和vice vesa ... 注意:我使用hive命令添加了必要的JARS:ADD JAR C:... \ hive-hbase-handler-0.9.0.jar等。

hbase版本:0.94.6 蜂巢版:0.9.0

任何额外的出口?还是配置? 我需要帮助! 非常感谢!

2 个答案:

答案 0 :(得分:2)

尝试通过在hive CLI中运行以下命令在ditributed缓存中添加这些jar,或在$HOME/.hiverc文件中包含这些行。这应解决ClassNotFoundException

ADD JAR ...../hive-0.9.0/lib/hive-hbase-handler-0.9.0.jar;
ADD JAR ...../hbase-0.94.1/hbase-0.94.6.jar;
ADD JAR ...../hbase-0.94.1/lib/zookeeper-3.4.3.jar;
ADD JAR ...../hbase-0.94.1/lib/guava-11.0.2.jar;
ADD JAR ...../hbase-0.94.1/lib/protobuf-java-2.4.0a.jar;

在mapred模式下运行配置单元查询时(非本地),这是必需的。

答案 1 :(得分:1)

兄弟做了以下事情。你的问题将得到解决。 (根据你的版本改变)

在hadoop lib目录中复制这些文件 $ HIVE_HOME / lib目录/蜂房HBase的处理程序-0.8.1.jar,$ HIVE_HOME / lib目录/ HBase的-0.90.0.jar,$ HIVE_HOME / lib目录/饲养员-3.3.1.jar,$ HIVE_HOME / lib中/ guava- r06.jar, 和蜂巢罐