복붙노트

[HADOOP] Sqoop : mysql 드라이버 예외를로드 할 수 없습니다.

HADOOP

Sqoop : mysql 드라이버 예외를로드 할 수 없습니다.

로컬 컴퓨터에 Sqoop을 설치했습니다. 다음은 설정 정보입니다.

Bash.bashrc :

export HADOOP_HOME=/home/hduser/hadoop
export HBASE_HOME=/home/hduser/hbase
export HIVE_HOME=/home/hduser/hive
export HCAT_HOME=/home/hduser/hive/hcatalog
export SQOOP_HOME=/home/hduser/sqoop

export PATH=$PATH:$HIVE_HOME/bin
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HBASE_HOME/bin
export PATH=$PATH:$SQOOP_HOME/bin
export PATH=$PATH:$HCAT_HOME/bin

하둡 :

Version: Hadoop 1.0.3

하이브 :

Version: hive 0.11.0 

MySQL의 커넥터 드라이버

version: mysql-connector-java-5.1.29

"The driver is copied to the lib folder of sqoop"

Sqoop :

version: sqoop 1.4.4

모든 설치를 한 후에 나는 practice_1이라는 이름의 mysql 테이블을 생성하지만, load 명령을 실행하여 mysql에서 hdfs로 데이터를로드하면 명령이 예외를 throw합니다.

ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not     load db driver class: com.mysql.jdbc.Driver

아무도 내게 가능한 문제가 될 수있는 가이드를 주시기 바랍니다 수 있습니다.

해결법

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

    1.'SQOOP'classpath에 데이터베이스 드라이버가 필요합니다. 이것을 확인하십시오 'SQOOP'에 대한 훌륭한 설명이 있습니다.

    'SQOOP'classpath에 데이터베이스 드라이버가 필요합니다. 이것을 확인하십시오 'SQOOP'에 대한 훌륭한 설명이 있습니다.

    SQOOP에는 다음과 같은 다른 옵션이 있습니다.

    여기에서

    커넥터와 드라이버의 차이점을 이해하려면 여기를 클릭하십시오.

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

    2.공유 라이브러리 사용을 피하는 또 다른 해결책은 HADOOP_CLASSPATH를 사용하여 sqoop의 classpath에 드라이버 jar를 추가하는 것입니다. 작동하도록 -libjars 옵션이 없습니다. 이 솔루션은 kerberos를 사용하는 보안 클러스터에서도 작동합니다.

    공유 라이브러리 사용을 피하는 또 다른 해결책은 HADOOP_CLASSPATH를 사용하여 sqoop의 classpath에 드라이버 jar를 추가하는 것입니다. 작동하도록 -libjars 옵션이 없습니다. 이 솔루션은 kerberos를 사용하는 보안 클러스터에서도 작동합니다.

    HADOOP_CLASSPATH=/use.case/lib/postgresql-9.2-1003-jdbc4.jar
    sqoop export --connect jdbc:postgresql://db:5432/user \
      --driver org.postgresql.Driver \
      --connection-manager org.apache.sqoop.manager.GenericJdbcManager \
      --username user \
      -P \
      --export-dir /user/hive/warehouse/db1/table1 \
      --table table2
    

    이것은 최소한 sqoop 1.4.3-cdh4.4.0에서 작동합니다.

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

    3.MySql 커넥터를 / usr / lib / sqoop / lib에 추가해야합니다. 기본적으로 MySQL JDBC 드라이버는 Sqoop 배포판에 존재하지 않으므로 기본 배포판이 Apache 라이선스를 완벽하게 준수합니다. 희망이 도움이 ...!

    MySql 커넥터를 / usr / lib / sqoop / lib에 추가해야합니다. 기본적으로 MySQL JDBC 드라이버는 Sqoop 배포판에 존재하지 않으므로 기본 배포판이 Apache 라이선스를 완벽하게 준수합니다. 희망이 도움이 ...!

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

    4.mysql 드라이버를 sqoop lib 폴더에 복사했다면. 확실히 작동 할 것입니다. sqoop 명령이 올바른지 확인하십시오.

    mysql 드라이버를 sqoop lib 폴더에 복사했다면. 확실히 작동 할 것입니다. sqoop 명령이 올바른지 확인하십시오.

    /home/hduser/sqoop/bin/sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root -–table practice_1 -m 1
    
  5. ==============================

    5.'mysql-connector-java-5.1.41-bin.jar'을 sqoop / lib 폴더에 복사하고 sqoop import 문을 실행한다.

    'mysql-connector-java-5.1.41-bin.jar'을 sqoop / lib 폴더에 복사하고 sqoop import 문을 실행한다.

  6. ==============================

    6.그것은 Oozie ShareLib 문제입니다. 아래 스크립트는 내 작품 :

    그것은 Oozie ShareLib 문제입니다. 아래 스크립트는 내 작품 :

    셸에서

    sudo -u hdfs hadoop fs -chown cloudera:cloudera /user/oozie/share/lib/lib_20170719053712/sqoop
    hdfs dfs -put /var/lib/sqoop/mysql-connector-java.jar /user/oozie/share/lib/lib_20170719053712/sqoop
    sudo -u hdfs hadoop fs -chown oozie:oozie /user/oozie/share/lib/lib_20170719053712/sqoop
    
    oozie admin -oozie http://localhost:11000/oozie -sharelibupdate
    oozie admin -oozie http://localhost:11000/oozie -shareliblist sqoop
    

    색조 스퀘어 클라이언트

    sqoop list-tables --connect jdbc:mysql://localhost/retail_db --username root --password cloudera
    

    자세한 내용 :

    https://blog.cloudera.com/blog/2014/05/how-to-use-the-sharelib-in-apache-oozie-cdh-5/

  7. ==============================

    7.다음과 같이 테이블에 권한을 부여해야합니다.

    다음과 같이 테이블에 권한을 부여해야합니다.

    다음은 성공적으로 실행 된 샘플 명령입니다.

  8. from https://stackoverflow.com/questions/22741183/sqoop-could-not-load-mysql-driver-exception by cc-by-sa and MIT license