복붙노트

[HADOOP] Hiber와 Hiber를 통합하기 : Hbase 테이블 등록하기

HADOOP

Hiber와 Hiber를 통합하기 : Hbase 테이블 등록하기

나는 다음 버전의 Hbase와 Hive를 포함하고있는 Hortonworks Sandbox 2.0을 사용하고있다.

Component       Version
------------------------
Apache Hadoop     2.2.0
Apache Hive      0.12.0
Apache HBase     0.96.0
Apache ZooKeeper  3.4.5

...과 다음 쿼리를 사용하여 하이브에 hbase 테이블을 등록하려고합니다.

CREATE TABLE IF NOT EXISTS Document_Table_Hive (key STRING, author STRING, category STRING) STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ WITH SERDEPROPERTIES (‘hbase.columns.mapping’ = ‘:key,metadata:author,categories:category’) TBLPROPERTIES (‘hbase.table.name’ = ‘Document’);

이 작동하지 않습니다, 다음과 같은 예외가 발생합니다.

2014-03-26 09:14:57,341 ERROR exec.DDLTask (DDLTask.java:execute(435)) – java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
at org.apache.hadoop.hive.hbase.HBaseStorageHandler.setConf(HBaseStorageHandler.java:249)
at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)

2014-03-26 09:14:57,368 ERROR ql.Driver (SessionState.java:printError(419)) – FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/apache/hadoop/hbase/HBaseConfiguration

Hbase Table "Document"를 이미 만들었고 describe 명령은 다음 설명을 제공합니다.

‘Document’,
{NAME => ‘categories’,..},
{NAME => ‘comments’,..},
{NAME => ‘metadata’,..}

나는 다음과 같은 것을 시도했다.

그리고 아직 작동하지 않습니다!

하이브 클래스 패스에 항아리를 추가하여 hbaseConfiguration 클래스를 찾고, 아니면 전혀 다른 문제입니까?

해결법

  1. ==============================

    1.전체 항아리를 복사 할 필요가 없습니다. 그냥 hbase - *. jar, zookeeper * .jar, hive-hbase-handler * .jar이면 충분합니다. 기본적으로 모든 hadoop 관련 jar는 hadoop classpath에 추가됩니다. hive는 내부적으로 hadoop 명령을 사용하여 실행합니다.

    전체 항아리를 복사 할 필요가 없습니다. 그냥 hbase - *. jar, zookeeper * .jar, hive-hbase-handler * .jar이면 충분합니다. 기본적으로 모든 hadoop 관련 jar는 hadoop classpath에 추가됩니다. hive는 내부적으로 hadoop 명령을 사용하여 실행합니다.

    또는

    /etc/hive/conf/hive-env.sh에서 / usr / lib / hbase / lib /에 HIVE_AUX_JARS_PATH 환경 변수를 지정하여 hbase jar 파일을 하이브 라이브러리에 복사하는 대신에 할 것입니다.

    두 번째 방법은 첫 번째 방법보다 더 제안됩니다

  2. from https://stackoverflow.com/questions/22688660/integrating-hbase-with-hive-register-hbase-table by cc-by-sa and MIT license