【问题标题】:Unable to create hive table for hbase无法为 hbase 创建配置单元表
【发布时间】:2015-07-19 13:04:17
【问题描述】:

我正在使用 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 主目录中,我创建了一个 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

您能否建议这里实际上出了什么问题。

【问题讨论】:

    标签: hadoop hive hbase integration


    【解决方案1】:

    今天我遇到了同样的问题,并使用新的 pom.xml 配置再次构建 hive-src 请参考并更改 pom.xml 中的这一行 enter code here1.1.2

    注意:我使用 Hadoop 2.7.1、Hive 1.2.1 和 Hbase 1.1.2

    【讨论】:

    • 1.1.2
    【解决方案2】:

    在使用 hbase 版本 0.98.14 和 hive 版本 1.1.0 后,此问题得到修复;详情请访问http://stackoverflow.com/questions/32701905/unable-to-load-data-in-hbase-table-‌​‌​from-hive

    【讨论】:

      【解决方案3】:

      当前时间,根据HBaseIntegration

      Hive 2.x 与 HBase 1.x 及更高版本兼容。 (看 HIVE-10990 了解详情。)希望使用 HBase 1.x 的消费者 使用 Hive 1.x 需要自己编译 Hive 1.x 流代码。

      简而言之,在 Hive 2.x 发布之前,您需要自己编译 Hive 1.x 流代码!

      【讨论】:

      • 能否告诉我编译 Hive 1.x 流代码的步骤
      • 我已将 hbase 版本更改为 0.98.14-hadoop2 并成功创建表,但无法插入数据。能否请您看一下http://stackoverflow.com/questions/32701905/unable-to-load-data-in-hbase-table-from-hive 的帖子并提出建议
      • 由于您的两个问题都已解决,您可能希望接受答案 :)
      • 此问题在使用 hbase 0.98.14 版和 hive 1.1.0 后已修复...请访问 http://stackoverflow.com/questions/32701905/unable-to-load-data-in-hbase-table-‌​from-hive 了解详情
      【解决方案4】:

      您似乎错过了hbase.jar

      首先检查您的 hive-site.xml 文件中的属性 hive.aux.jars.path 并确保指定了 hbase.jarzookeeper.jarhive-hbase-handlerXXXX.jar

      之后,进入 hive 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;
      ...
      

      【讨论】:

      • 是的 hive.aux.jars.path 以前丢失了。
      • 我已经为 zookeeper-3.4.6.jar,hive-hbase-handler-1.1.0.jar,guava-14.0.1.jar,hbase-common-1.0.1.jar 添加了这个,hbase-client-1.0.1.jar,hbase-hadoop2-compat-1.0.1.jar,hbase-hadoop-compat-1.0.1.jar,commons-configuration-1.6.jar 在 hive_env.sh 我设置了 HIVE_AUX_JARS_PATH , JAVA_HOME, HADOOP_HOME, HIVE_HOME 和 PATH
      • hive> 列出罐子; /usr/lib/hive/auxlib/hbase-common-1.0.1.jar /usr/lib/hive/auxlib/zookeeper-3.4.6.jar /usr/lib/hive/auxlib/guava-14.0.1.jar /usr/lib/hive/auxlib/hbase-client-1.0.1.jar /usr/lib/hive/auxlib/commons-configuration-1.6.jar /usr/lib/hive/auxlib/hive-hbase-handler-1.1 .0.jar /usr/lib/hive/auxlib/hbase-hadoop2-compat-1.0.1.jar /usr/lib/hive/auxlib/hbase-hadoop-compat-1.0.1.jar
      • SAME ERROR: hive> CREATE TABLE tblHbase(key int, a int, b int,c bigint) > 由 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 存储 > WITH SERDEPROPERTIES (" hbase.columns.mapping" = ":key,f:a,f:b,f:c") > TBLPROPERTIES("hbase.table.name"="tblHbase");失败:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。 org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)
      • 谁能帮我解决上述问题
      猜你喜欢
      • 2015-04-16
      • 1970-01-01
      • 2019-02-07
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多