我正在运行hive版本1.1.0,Hbase版本1.0.1和hadoop版本2.7.0。现在,对于以下命令,我收到错误
hive> CREATE TABLE hbase_table_1(eid int, ename string, esal double)
> STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
> WITH SERDEPROPERTIES
> ("hbase.columns.mapping" = ":key,cfstr:enm,cfsal:esl")
> TBLPROPERTIES ("hbase.table.name" = "emp1");
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V
如果我在HBase中创建一个表并使用外部表从Hive引用它,那就可以了。
在hive home中,我创建了一个auxlib目录并复制了下面的jar文件。
hduser@ubuntu:/usr/lib/hive/auxlib$ ls
commons-beanutils-1.7.0.jar commons-httpclient-3.0.1.jar hbase-checkstyle-1.0.1.jar hbase-protocol-1.0.1.jar
commons-beanutils-core-1.8.0.jar commons-io-2.4.jar hbase-client-1.0.1.jar hbase-rest-1.0.1.jar
commons-cli-1.2.jar commons-lang-2.6.jar hbase-common-1.0.1.jar hbase-server-1.0.1.jar
commons-codec-1.4.jar commons-logging-1.1.3.jar hbase-common-1.0.1-tests.jar hbase-server-1.0.1-tests.jar
commons-collections-3.2.1.jar commons-math-2.1.jar hbase-examples-1.0.1.jar hbase-shell-1.0.1.jar
commons-compiler-2.7.6.jar commons-pool-1.5.4.jar hbase-hadoop2-compat-1.0.1.jar hbase-testing-util-1.0.1.jar
commons-compress-1.4.1.jar commons-vfs2-2.0.jar hbase-hadoop-compat-1.0.1.jar hbase-thrift-1.0.1.jar
commons-configuration-1.6.jar guava-14.0.1.jar hbase-it-1.0.1.jar hive-hbase-handler-1.1.0.jar
commons-dbcp-1.4.jar hbase-annotations-1.0.1.jar hbase-it-1.0.1-tests.jar zookeeper-3.4.6.jar
commons-digester-1.8.jar hbase-annotations-1.0.1-tests.jar hbase-prefix-tree-1.0.1.jar
以下详细信息在.bashrc文件中设置
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0/
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
#alias java="`which java` -Dwhatever"
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB=$HADOOP_HOME/share/hadoop/common/lib
export HADOOP_TOOLS_LIB=$HADOOP_HOME/share/hadoop/tools/lib
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export HIVE_HOME="/usr/lib/hive"
export HBASE_HOME="/usr/lib/hbase"
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin:$HADOOP_COMMON_LIB:$HADOOP_TOOLS_LIB:$PATH
你能不能在这里说明这里有什么问题。
答案 0 :(得分:0)
您似乎错过了hbase.jar
首先检查您的hive-site.xml
文件中的hive.aux.jars.path
属性,并确保hbase.jar
,zookeeper.jar
&指定了hive-hbase-handlerXXXX.jar
。
之后,进入配置单元shell并运行list jars
以确保它们已被加载。您也可以使用命令add jar [your-jar].jar
此外,如果您不想搞乱配置文件,可以使用首选的初始化命令在主路径中创建自己的.hiverc文件,即:
SET hive.cli.print.header=true;
SET hbase.scan.cacheblock=0;
SET hbase.scan.cache=10000;
SET hbase.client.scanner.cache=10000;
add JAR /usr/lib/hive/lib/zookeeper.jar;
add JAR /usr/lib/hive/lib/hbase.jar;
add JAR /usr/lib/hive/lib/hive-hbase-handler-0.10.0-cdh4.7.1.jar;
...
答案 1 :(得分:0)
目前,根据HBaseIntegration
Hive 2.x 将与HBase 1.x及更高版本兼容。 (看到 HIVE-10990了解详情。)消费者希望使用HBase 1.x 使用Hive 1.x将需要自己编译Hive 1.x流代码。
简而言之,在Hive 2.x发布之前,您需要自己编译Hive 1.x流代码!
答案 2 :(得分:0)
使用hbase版本0.98.14与hive版本1.1.0后,此问题得到修复;请访问http://stackoverflow.com/questions/32701905/unable-to-load-data-in-hbase-table-from-hive
了解详情
答案 3 :(得分:0)
到目前为止,我遇到了同样的问题,并使用新的pom.xml配置再次构建hive-src
请在 pom.xml 中查看并更改此行
enter code here
的 1.1.2 强>
注意:我使用Hadoop 2.7.1,Hive 1.2.1和Hbase 1.1.2