복붙노트

[HADOOP] 상태 1로 종료 된 Sqoop 하이브

HADOOP

상태 1로 종료 된 Sqoop 하이브

내가 실행할 때 :

sqoop import --connect jdbc:mysql://localhost/testdb --table test --hive-table test --hive-import -m 1 

다음과 같은 오류 메시지가 나타납니다.

13/04/21 16:42:50 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 1
    at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:364)
    at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:314)
    at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:226)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:415)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:238)

나는 그것을 시도했지만 아무 해결책도 찾지 못했습니다. Hadoop을 가상 분산 방식으로 로컬로 설정했습니다. 하이브가 잘 돌아가고 있습니다 ... 저는 임베디드 전이를 사용했습니다. 어떤 아이디어를 어떻게 해결할 수 있습니까? 감사, 디디

해결법

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

    1.로그를 기반으로 다음과 같은 예외가 발생하는 것 같습니다.

    로그를 기반으로 다음과 같은 예외가 발생하는 것 같습니다.

    13/04/22 18:34:44 정보 하이브. 하이브 가져 오기 : 스레드 "main"의 예외 java.lang.NoSuchMethodError : org.apache.thrift.EncodingUtils.setBit (BIZ) B

    이전에 사용자가 HBase와 Hive를 "호환되지 않는"버전으로 사용하고 있었을 때이 문제를 보았습니다. 비 호환성은 일반적으로 여러 레벨에서 발생할 수 있지만, HBase 및 Hive가 다른 절약 버전을 사용하는 경우가 이에 해당됩니다. Sqoop은 classpath에 HBase와 Hive jar를 모두 추가하기 때문에 하나의 thrift 버전 만 활성화 될 수 있으므로 "두 번째"도구 (보통 하이브)가 제대로 작동하지 않습니다.

    혹시 Sqoop을 실행중인 상자에 HBase와 Hive를 모두 설치 했습니까? 그렇다면 각 프로젝트에서 사용하는 중고품 버전을 확인할 수 있습니까? "* thrift * .jar"를 검색하면됩니다. 두 질문에 대한 답이 모두 긍정적이면 HBase_HOME을 Sqoop에 강요하는 HBase의 버전을로드하지 않도록 설정할 수 있습니다.

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

    2.나는 Jarek Jarcec Cecho의 대답에 동의한다.

    나는 Jarek Jarcec Cecho의 대답에 동의한다.

    다른 해결책은 libthrift * .jar 파일을 $ HIVE_HOME / lib에서 $ SQOOP_HOME / lib로 복사하는 것입니다.

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

    3.mysql 테이블에 대한 권한 문제가 있거나 하이브 리브에 mysql connector jar가 없습니다. 명령의 전체 출력을 공유하십시오.

    mysql 테이블에 대한 권한 문제가 있거나 하이브 리브에 mysql connector jar가 없습니다. 명령의 전체 출력을 공유하십시오.

  4. ==============================

    4.나는 똑같은 오류에 직면했다. 이것은 libthrift-0.8.0.jar와 libthrift-0.9.0.jar가 hbase와 hive에 각각 관련이있을 것이다. 그래서 나는 단지 나의 HBASE_HOME을 알 수없는 위치로 향하게하고 나의 bash를 exec했다. 그럼 괜찮아.

    나는 똑같은 오류에 직면했다. 이것은 libthrift-0.8.0.jar와 libthrift-0.9.0.jar가 hbase와 hive에 각각 관련이있을 것이다. 그래서 나는 단지 나의 HBASE_HOME을 알 수없는 위치로 향하게하고 나의 bash를 exec했다. 그럼 괜찮아.

    하지만 여기에 하이브가 직면 한 문제는 가져 오기를 시도한 테이블입니다.이 테이블은 이미 테이블이 종료되었다고 말하면서 실패하지만 사실은 그렇지 않습니다. metastore db 파일이 이미 작성되었을 것입니다! 그래서 metastoredb의 전체 폴더를 삭제하지 않으려는 경우 테이블의 이름을 변경하고 명령을 다시 실행해야합니다.

  5. from https://stackoverflow.com/questions/16133156/sqoop-hive-exited-with-status-1 by cc-by-sa and MIT license