복붙노트

[HADOOP] 하이브에서 HBase를 테이블에 데이터를로드 할 수 없습니다

HADOOP

하이브에서 HBase를 테이블에 데이터를로드 할 수 없습니다

나는 하둡 버전 2.7.0, 하이브 버전 1.1.0, HBase를 버전 HBase를-0.98.14-hadoop2을 사용하고 있습니다.

나는 성공적으로 하이브에서 HBase를 테이블을 만들었습니다.

하이브 표 hive_hbase_emp_test CREATE (코식)> (이드 INT, ENAME의 문자열을 ESAL 더블)               > 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'저장               > SERDEPROPERTIES WITH               > ( "hbase.columns.mapping"= "키 cfstr : ENM, cfsal : ESL")               > TBLPROPERTIES ( "hbase.table.name"= "hive_hbase_emp_test"); 승인 시간 촬영 : 0.874 초 HBase를 (주) : 004 : 0>을 설명하는 'hive_hbase_emp_test' 표 hive_hbase_emp_test을 사용할 수 있습니다 hive_hbase_emp_test 열 가족을 설명 {NAME => 'cfsal'DATA_BLOCK_ENCODING가 => "NONE", 블룸 필터 => 'ROW'REPLICATION_SCOPE는 => 0, VERSIONS => '1'COMPRESSION => "NONE", MIN_VER SIONS => 0, TTL => 'FOREVER'KEEP_DELETED_CELLS => 'FALSE'BLOCKSIZE => '65536'IN_MEMORY => '거짓'BLOCKCACHE => '참'} {NAME => 'cfstr'DATA_BLOCK_ENCODING가 => "NONE", 블룸 필터 => 'ROW'REPLICATION_SCOPE는 => 0, VERSIONS => '1'COMPRESSION => "NONE", MIN_VER SIONS => 0, TTL => 'FOREVER'KEEP_DELETED_CELLS => 'FALSE'BLOCKSIZE => '65536'IN_MEMORY => '거짓'BLOCKCACHE => '참'} 3.0650 초에 2 행 (들)

하지만 그것은 실패 하이브에서 테이블을로드하려고 할 때.

하이브 (코식)> INSERT 덮어 테이블 EMPID, empname, hive_employee FROM empsal을 선택 hive_hbase_emp_test; 쿼리 ID = hduser_20150921110000_249675d5-9da7-49fe-b03e-3a2d813ac898 총 작업 = 1 1에서 작업 일을 시작 연산자를 줄이고 더가 이후 감소 작업의 수는 0으로 설정되어 있지 않은 작업 = job_1442836788507_0011, 추적 URL = HTTP 시작 : // localhost를 : 8088 / 프록시 / application_1442836788507_0011 / 킬 명령 = / usr / 지방 / 하둡 / 빈 / 하둡 작업 -kill job_1442836788507_0011 무대-0 하둡 작업 정보 : 매퍼의 수 : 1; 이경 수 : 0 2015년 9월 21일 11 : 01 : 스테이지 39,041지도 0 = 0 % = 0 % 감소 2015년 9월 21일 11 : 02 : 39,429 무대-0지도 = 0 % = 0 % 감소 2015년 9월 21일 11 : 02 : 45,814 무대-0지도 = 100 % = 0 % 감소 오류가 종료 작업 = job_1442836788507_0011 작업 중 오류, 디버깅 정보를 얻는 ... 검사 작업 ID : 작업 job_1442836788507_0011에서 task_1442836788507_0011_m_000000 (등) 가장 실패와 작업 (4) ----- 작업 ID :   task_1442836788507_0011_m_000000 URL :   http://0.0.0.0:8088/taskdetails.jsp?jobid=job_1442836788507_0011&tipid=task_1442836788507_0011_m_000000 ----- 이 작업에 대한 진단 메시지 : 오류 : java.lang.RuntimeException가 : 구성 개체 오류 org.apache.hadoop.util.ReflectionUtils.setJobConf에서 (ReflectionUtils.java:112) org.apache.hadoop.util.ReflectionUtils.setConf에서 (ReflectionUtils.java:78) org.apache.hadoop.util.ReflectionUtils.newInstance에서 (ReflectionUtils.java:136) org.apache.hadoop.mapred.MapTask.runOldMapper에서 (MapTask.java:449) org.apache.hadoop.mapred.MapTask.run에서 (MapTask.java:343) org.apache.hadoop.mapred.YarnChild $ 2.run에서 (YarnChild.java:163) java.security.AccessController.doPrivileged에서 (기본 방법) javax.security.auth.Subject.doAs에서 (Subject.java:415) org.apache.hadoop.security.UserGroupInformation.doAs에서 (UserGroupInformation.java:1657) org.apache.hadoop.mapred.YarnChild.main에서 (YarnChild.java:158) java.lang.reflect.InvocationTargetException :에 의한 sun.reflect.NativeMethodAccessorImpl.invoke0에서 (기본 방법) sun.reflect.NativeMethodAccessorImpl.invoke에서 (NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke에서 (DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke에서 (Method.java:601) org.apache.hadoop.util.ReflectionUtils.setJobConf에서 (ReflectionUtils.java:109) ... 9 더 java.lang.RuntimeException가 :에 의한 구성 개체 오류 org.apache.hadoop.util.ReflectionUtils.setJobConf에서 (ReflectionUtils.java:112) org.apache.hadoop.util.ReflectionUtils.setConf에서 (ReflectionUtils.java:78) org.apache.hadoop.util.ReflectionUtils.newInstance에서 (ReflectionUtils.java:136) org.apache.hadoop.mapred.MapRunner.configure에서 (MapRunner.java:38) ... 14 개 java.lang.reflect.InvocationTargetException :에 의한 sun.reflect.NativeMethodAccessorImpl.invoke0에서 (기본 방법) sun.reflect.NativeMethodAccessorImpl.invoke에서 (NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke에서 (DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke에서 (Method.java:601) org.apache.hadoop.util.ReflectionUtils.setJobConf에서 (ReflectionUtils.java:109) ... 17 개 java.lang.RuntimeException가 :에 의한지도 운영자 초기화에 실패 org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure에서 (ExecMapper.java:147) ... 22 개 B (B Ljava / LANG / 문자열) org.apache.hadoop.hive.serde2.lazy.LazyUtils.getByte : java.lang.NoSuchMethodError : 기인 org.apache.hadoop.hive.serde2.lazy.LazySerDeParameters.collectSeparators에서 (LazySerDeParameters.java:223) org.apache.hadoop.hive.serde2.lazy.LazySerDeParameters에서. <초기화> (LazySerDeParameters.java:90) org.apache.hadoop.hive.hbase.HBaseSerDeParameters에서. <초기화> (HBaseSerDeParameters.java:95) org.apache.hadoop.hive.hbase.HBaseSerDe.initialize에서 (HBaseSerDe.java:117) org.apache.hadoop.hive.ql.exec.FileSinkOperator.initializeOp에서 (FileSinkOperator.java:344) org.apache.hadoop.hive.ql.exec.Operator.initialize에서 (Operator.java:385) org.apache.hadoop.hive.ql.exec.Operator.initialize에서 (Operator.java:469) org.apache.hadoop.hive.ql.exec.Operator.initializeChildren에서 (Operator.java:425) org.apache.hadoop.hive.ql.exec.SelectOperator.initializeOp에서 (SelectOperator.java:65) org.apache.hadoop.hive.ql.exec.Operator.initialize에서 (Operator.java:385) org.apache.hadoop.hive.ql.exec.Operator.initialize에서 (Operator.java:469) org.apache.hadoop.hive.ql.exec.Operator.initializeChildren에서 (Operator.java:425) org.apache.hadoop.hive.ql.exec.TableScanOperator.initializeOp에서 (TableScanOperator.java:193) org.apache.hadoop.hive.ql.exec.Operator.initialize에서 (Operator.java:385) org.apache.hadoop.hive.ql.exec.MapOperator.initializeOp에서 (MapOperator.java:427) org.apache.hadoop.hive.ql.exec.Operator.initialize에서 (Operator.java:385) org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure에서 (ExecMapper.java:126) ... 22 개 실패 : 실행 오류, org.apache.hadoop.hive.ql.exec.mr.MapRedTask에서 코드 2를 반환 맵리 듀스 잡스는 출시 : 단계 단계-0 :지도 : 1 HDFS 읽기 : 0 HDFS 쓰기 : 0 FAIL 총 맵리 듀스 CPU의 소비 시간 : 0 밀리 초

하이브 auxlib 폴더의 내용은 다음과 같습니다

hduser의 @ 우분투 :은 / usr / lib 디렉토리 / 하이브 / auxlib의 $ 1! 활성화-1.1.jar aopalliance-1.0.jar apacheds - 국제화-2.0.0-M15.jar apacheds-Kerberos를 코덱 2.0.0-M15.jar API-ASN1-API-1.0.0-M20.jar API-의 util-1.0.0-M20.jar ASM-3.1.jar 아 브로-1.7.4.jar AWS-자바 SDK-1.7.4.jar 푸른 저장-2.0.0.jar 공유지 - beanutils-1.7.0.jar 공유지 - beanutils 코어-1.8.0.jar 공유지 - CLI-1.2.jar 평민 - 코덱 - 1.7.jar 평민 - 컬렉션-3.2.1.jar 공유지 - 압축-1.4.1.jar 공유지 구성-1.6.jar 공유지 - 데몬-1.0.13.jar 공유지 - 소화조-1.8.jar 공유지 엘 - 1.0.jar 평민 - HttpClient를-3.1.jar 공유지-IO-2.4.jar 평민 - 랭 - 2.6.jar 평민 - lang3-3.3.2.jar 평민 로깅-1.1.1.jar 공유지 - 수학-2.1.jar 평민 - math3-3.1.1.jar 공유지-NET-3.1.jar 큐레이터 클라이언트-2.7.1.jar 큐레이터 프레임 워크-2.7.1.jar 큐레이터 - 조리법-2.7.1.jar findbugs - 주석 - 1.3.9-1.jar gmbal-API 전용-3.0.0-b023.jar 회색 프레임 워크-2.1.2.jar 회색-HTTP-2.1.2.jar 회색 - HTTP 서버-2.1.2.jar 회색-HTTP-서블릿-2.1.2.jar 회색-RCM-2.1.2.jar GSON-2.2.4.jar 구아바 - 12.0.1.jar guice-3.0.jar guice - 서블릿-3.0.jar 하둡 - 주석 - 2.7.0.jar 하둡 - 개미-2.7.0.jar 하둡 - 아카이브-2.7.0.jar 하둡 - 인증 - 2.7.0.jar 하둡-AWS-2.7.0.jar 하둡 - 푸른-2.7.0.jar 하둡 클라이언트-2.2.0.jar 하둡 - 공통 2.2.0.jar 하둡 - datajoin-2.7.0.jar 하둡 - distcp-2.7.0.jar 하둡 - 엑스트라-2.7.0.jar 하둡 - gridmix-2.7.0.jar 하둡 HDFS-2.7.0.jar 하둡 HDFS-2.7.0-tests.jar 하둡 HDFS-NFS-2.7.0.jar 하둡 맵리 듀스 - 클라이언트 응용 프로그램-2.7.0.jar 하둡 맵리 듀스 - 클라이언트 공통 2.7.0.jar 하둡 맵리 듀스 클라이언트 코어-2.7.0.jar 하둡 맵리 듀스 클라이언트-HS-2.7.0.jar 하둡 맵리 듀스 클라이언트-HS-플러그인-2.7.0.jar 하둡 맵리 듀스 - 클라이언트 jobclient-2.7.0.jar 하둡 맵리 듀스 - 클라이언트 jobclient-2.7.0-tests.jar 하둡 맵리 듀스 - 클라이언트 셔플-2.7.0.jar 하둡 맵리 듀스 - 예-2.7.0.jar 하둡 - OpenStack은-2.7.0.jar 하둡 - 반추위-2.7.0.jar 하둡-SLS-2.7.0.jar 하둡 스트리밍-2.7.0.jar 하둡 얀 API-2.7.0.jar 하둡 - 원사 - 응용 - distributedshell-2.7.0.jar 하둡 - 원사 - 애플리케이션 - 관리되지 않는-AM-실행-2.7.0.jar 하둡 - 원사 - 클라이언트-2.7.0.jar 하둡 - 원사 - 일반-2.7.0.jar 하둡 - 원사 - 레지스트리-2.7.0.jar 하둡 - 원사 - 서버 applicationhistoryservice-2.7.0.jar 하둡 - 원사 - 서버 공통 2.7.0.jar 하둡 - 원사 - 서버 nodemanager-2.7.0.jar 하둡 - 원사 - 서버 ResourceManager에-2.7.0.jar 하둡 - 원사 - 서버 sharedcachemanager-2.7.0.jar 하둡 얀 서버 테스트-2.7.0.jar 하둡 - 원사 - 서버 웹 프록시-2.7.0.jar hamcrest 코어-1.3.jar HBase를-주석-0.98.14-hadoop2.jar HBase를-checkstyle-0.98.14-hadoop2.jar HBase를 클라이언트 - 0.98.14 - hadoop2.jar HBase를-공통 0.98.14-hadoop2.jar HBase를-공통 0.98.14-hadoop2-tests.jar HBase를-예-0.98.14-hadoop2.jar HBase를-hadoop2-의 compat-0.98.14-hadoop2.jar HBase를-하둡의 compat-0.98.14-hadoop2.jar HBase를-을-0.98.14-hadoop2.jar HBase를 - 그것 - 0.98.14을-hadoop2-tests.jar HBase를 접두사 트리-0.98.14-hadoop2.jar HBase를 프로토콜-0.98.14-hadoop2.jar HBase를-자원 번들-0.98.14-hadoop2.jar HBase를 받침대-0.98.14-hadoop2.jar HBase를 서버-0.98.14-hadoop2.jar HBase를 서버-0.98.14-hadoop2-tests.jar HBase를 쉘-0.98.14-hadoop2.jar HBase를 테스트-폴더의 유틸리티-0.98.14-hadoop2.jar HBase를-절약-0.98.14-hadoop2.jar 높은 규모의-LIB-1.1.1.jar 하이브 HBase를 핸들러-1.2.1.jar 하이브 serde-1.2.1.jar htrace 코어-2.04.jar htrace 코어-3.1.0-incubating.jar HttpClient를-4.1.3.jar HttpClient를-4.2.5.jar httpcore-4.1.3.jar httpcore-4.2.5.jar 잭슨 - 주석 - 2.2.3.jar 잭슨 코어-2.2.3.jar 잭슨 코어-ASL-1.8.8.jar 잭슨 코어-ASL-1.9.13.jar 잭슨 - 데이터 바인딩-2.2.3.jar 잭슨-jaxrs-1.8.8.jar 잭슨-jaxrs-1.9.13.jar 잭슨 - 매퍼 - ASL-1.8.8.jar 잭슨 - 매퍼 - ASL-1.9.13.jar 잭슨-XC-1.9.13.jar 잼 - 런타임-2.3.1.jar 재스퍼 컴파일러-5.5.23.jar 재스퍼 - 런타임-5.5.23.jar javax.inject-1.jar 자바 xmlbuilder-0.4.jar 에서 javax.servlet-3.1.jar 에서 javax.servlet-API-3.0.1.jar JAXB-API-2.2.2.jar JAXB-IMPL - 2.2.3-1.jar jcodings-1.0.8.jar 저지 클라이언트-1.8.jar 저지 코어-1.8.jar 저지 코어-1.9.jar 저지 - grizzly2-1.9.jar 저지 - guice-1.9.jar 저지-JSON-1.9.jar 저지 서버-1.9.jar 저지 테스트 프레임 워크 코어-1.9.jar 저지 테스트 프레임 워크 - grizzly2-1.9.jar JetS3t를-0.9.0.jar 투하-1.1.jar 투하-1.3.1.jar 부두-6.1.26.jar 부두 - SSLEngine의-6.1.26.jar 부두 - 폴더의 유틸리티 - 6.1.26.jar joda 시간 - 2.7.jar 조니-2.1.2.jar JRuby를 완성-1.6.8.jar jsch-0.1.42.jar JSP - 2.1-6.1.14.jar JSP-API-2.1-6.1.14.jar JSP-API-2.1.jar jsr305-3.0.0.jar JUnit을-4.11.jar leveldbjni 모두-1.8.jar libthrift-0.9.0.jar log4j에-1.2.17.jar 관리-API-3.0.0-b012.jar 통계 코어-3.0.1.jar mockito 모두-1.8.5.jar 그물코-3.6.6.Final.jar paranamer-2.3.jar protobuf - 자바-2.5.0.jar 서블릿 API를-2.5-6.1.14.jar 서블릿 API를-2.5.jar SLF4J-API-1.6.4.jar SLF4J-log4j12-1.6.4.jar1 이따위 - 자바 1.0.4.1.jar STAX-API-1.0-2.jar xmlenc-0.52.jar XZ-1.0.jar 사육사-3.4.6.jar

무엇을 나는 여기에 놓치고 있어요?

해결법

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

    1.버전 호환성에 문제가있는 것 같습니다. org.apache.hadoop.hive.serde2.lazy.LazyUtils.getByte는 하이브 1.2 방출이 커밋이 클래스에 첨가된다. 여기를 봐

    버전 호환성에 문제가있는 것 같습니다. org.apache.hadoop.hive.serde2.lazy.LazyUtils.getByte는 하이브 1.2 방출이 커밋이 클래스에 첨가된다. 여기를 봐

  2. ==============================

    2.사실은 내가 실수를했다. 나는 문제의 원인이 된 auxlib 경로에 하이브 HBase를 핸들러-1.2.1.jar 및 하이브 serde-1.2.1.jar를 유지했다. 나는 단지의 1.2.1 버전을 제거하고 그것은 하이브 HBase를 핸들러-1.1.0.jar 및 하이브 serde-1.1.0.jar와 잘 작동합니다. 그래서 문제는 (habse 버전 0.98.14 및 하둡 버전 2.7.0로) 하이브 버전 1.1.0로 결심했다.

    사실은 내가 실수를했다. 나는 문제의 원인이 된 auxlib 경로에 하이브 HBase를 핸들러-1.2.1.jar 및 하이브 serde-1.2.1.jar를 유지했다. 나는 단지의 1.2.1 버전을 제거하고 그것은 하이브 HBase를 핸들러-1.1.0.jar 및 하이브 serde-1.1.0.jar와 잘 작동합니다. 그래서 문제는 (habse 버전 0.98.14 및 하둡 버전 2.7.0로) 하이브 버전 1.1.0로 결심했다.

  3. ==============================

    3.NoSuchMethodError는 JVM이 클래스를 찾을 수있는 표현하지만, 방법은 찾을 수 없습니다. 클래스 (런타임)이 될 수 있습니다, 당신의 하이브 버전과 동일하지 않습니다. 당신은 디버그 모드에서 하이브 CLI (빈 / 하이브 -hiveconf의 hive.root.logger = DEBUG, 콘솔)을 시작할 수 있습니다. 그것은 모든 단지를 표시하고 로그의 항아리 버전을 찾을 수 있습니다.

    NoSuchMethodError는 JVM이 클래스를 찾을 수있는 표현하지만, 방법은 찾을 수 없습니다. 클래스 (런타임)이 될 수 있습니다, 당신의 하이브 버전과 동일하지 않습니다. 당신은 디버그 모드에서 하이브 CLI (빈 / 하이브 -hiveconf의 hive.root.logger = DEBUG, 콘솔)을 시작할 수 있습니다. 그것은 모든 단지를 표시하고 로그의 항아리 버전을 찾을 수 있습니다.

  4. from https://stackoverflow.com/questions/32701905/unable-to-load-data-in-hbase-table-from-hive by cc-by-sa and MIT license