2014-11-06 2 views
1

하이브 + hbase 통합 클러스터가 있습니다. 테이블을 만들었습니다 : CREATE TABLE hbase_table_1 (키 int, 값 문자열) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping"= " cf1 : val ") TBLPROPERTIES ("hbase.table.name "="xyz ");하이브 - HBase ClassNotFound는 mapreduce 작업을 수행 할 때 발생합니다

실행할 때 확인 : select * from hbase_table_1;

하지만 카운트 작업을 실행하면 classnotfound 오류가 발생합니다. select count (*) from hbase_table_1;

오류 정보는 다음과 같습니다 때 java.io.IOException : org.apache ............. HiveInputformat.getRecordReader (HiveInputFormat.java:220) 에서 클래스 을 찾을 수 없습니다 ... ........ 는에 의해 발생 : java.lang.ClassNoteFoundException : java.lang.Class.forName0 (기본 방법)에

그 오류 메시지가있는 클래스 나에게 통지하지 않습니다.

내 불쌍한 영어로 죄송합니다.

이 문제가 발생 했습니까?

+0

나는 직접 오류 메시지를 씁니다. 권한 때문에 클러스터 컴퓨터에서 복사 할 수 없습니다. –

답변

0
1) COPY THESE FILES TO THE HADOOP LIBRARY. 

    sudo cp /usr/lib/hive/lib/hive-common-0.7.0-cdh3u0.jar /usr/lib/hadoop/lib/ 

    sudo cp /usr/lib/hive/lib/hbase-0.90.1-cdh3u0.jar /usr/lib/hadoop/lib/ 

    sudo cp /usr/lib/hive/lib/hbase-0.90.1-cdh3u0.jar /usr/lib/hadoop/lib/ 



    2)CLOSE HBASE AND HADOOP USING FOLLOWING COMMOND 

    /usr/lib/hadoop/bin/stop-all.sh 
    /usr/lib/hbase/bin/stop-hbase.sh 

3) RESTART HBASE AND HADOOP USING COMMOND 
/usr/lib/hadoop/bin/start-all.sh 
/usr/lib/hadoop/bin/start-hbase.sh 

이제 Hbase 저장소 핸들러를 사용하여 하이브에 테이블을 만듭니다.

+0

@Suthar 감사합니다. 그것은 내 문제를 해결합니다. hbase와 hadoop을 다시 시작할 필요가없는 방법이 있습니까? 프로덕션 환경에 있기 때문입니다. –

+0

그런 다음 2 단계와 3 단계를 수행하지 마십시오. 문제를 해결할 수 있습니다. –

+0

시도했지만 실패했습니다. –

관련 문제