복붙노트

[HADOOP] SQOOP SQLSERVER "적절한 연결 관리자가 설정되지 않았습니다"드라이버를로드하지 못했습니다.

HADOOP

SQOOP SQLSERVER "적절한 연결 관리자가 설정되지 않았습니다"드라이버를로드하지 못했습니다.

sqljdbc4.jar을 다운로드했습니다. 나는 jar가 저장되어있는 폴더에서 sqoop을 호출한다.

sqloop list-tables --driver com.microsoft.jdbc.sqlserver.SQLServerDriver --connect jdbc : sqlserver : // localhost : 1433; user = me; password = myPassword; -libjars =. / sqljdbc4.jar

다음 경고 및 오류가 표시됩니다.

13/10/25 18:38:13 WARN sqoop.ConnFactory : 매개 변수 --driver는 명백한 드라이버로 설정되지만 적절한 연결 관리자는 (--connection-manager를 통해) 설정되지 않습니다. Sqoop은 org.apache.sqoop.manager.GenericJdbcManager로 돌아갑니다. 어떤 연결 관리자가 다음에 사용해야하는지 명시 적으로 지정하십시오.

13/10/25 18:38:13 INFO manager.SqlManager: Using default fetchSize of 1000
13/10/25 18:38:13 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: com.microsoft.jdbc.sqlserver.SQLServerDriver
java.lang.RuntimeException: Could not load db driver class: com.microsoft.jdbc.sqlserver.SQLServerDriver
    at org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:727)
    at org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52)
    at org.apache.sqoop.manager.SqlManager.listTables(SqlManager.java:418)
    at org.apache.sqoop.tool.ListTablesTool.run(ListTablesTool.java:49)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    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)

최신 정보

아래의 주석을 반영하도록 명령 줄을 변경했습니다. 동일한 오류가 발생합니다.

sqloop list-databases -libjars = /jars/sqljdbc4.jar --connect jdbc : sqlserver : // localhost : 1433; user = me; password = password

13/10/28 17:00:33 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: com.microsoft.sqlserver.jdbc.SQLServerDriver
java.lang.RuntimeException: Could not load db driver class: com.microsoft.sqlserver.jdbc.SQLServerDriver
    at org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:727)
    at org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52)
    at org.apache.sqoop.manager.CatalogQueryManager.listDatabases(CatalogQueryManager.java:57)
    at org.apache.sqoop.tool.ListDatabasesTool.run(ListDatabasesTool.java:49)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    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)

sqljdbc4.jar의 목록을 보면 해당 경로의 클래스를 볼 수 있습니다 ... libjars 옵션이 수행해야하는 작업을 수행하지 않을 가능성이 있습니까?

해결법

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

    1.매개 변수를 사용하는 대다수의 경우에 --driver는 필수가 아니며 더 많은 경우 바람직하지 않은 동작을 유발할 수 있습니다. 명령 줄에서이 인수를 완전히 삭제하는 것이 좋습니다. 자세한 내용은 커넥터 대 드라이버 블로그 게시물을 확인하십시오.

    매개 변수를 사용하는 대다수의 경우에 --driver는 필수가 아니며 더 많은 경우 바람직하지 않은 동작을 유발할 수 있습니다. 명령 줄에서이 인수를 완전히 삭제하는 것이 좋습니다. 자세한 내용은 커넥터 대 드라이버 블로그 게시물을 확인하십시오.

    또한 존재하지 않는 JDBC 드라이버 클래스를 지정하고 있습니다. 올바른 것 :

    com.microsoft.sqlserver.jdbc.SQLServerDriver
    

    공식 문서에서 볼 수 있지만

    com.microsoft.jdbc.sqlserver.SQLServerDriver
    

    jdbc 및 sqlserver 패키지의 다른 순서에 유의하십시오. --driver 옵션을 전혀 사용하지 않는 것이 좋습니다 이유 중 하나입니다.

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

    2.$ SQOOP_HOME / lib에 sqljdbc4.jar를 넣고 sqoop-1.4.4.jar 또는 sqljdbc4.jar와 함께 사용중인 버전을 $ HADOOP_HOME / lib에 추가해야합니다.

    $ SQOOP_HOME / lib에 sqljdbc4.jar를 넣고 sqoop-1.4.4.jar 또는 sqljdbc4.jar와 함께 사용중인 버전을 $ HADOOP_HOME / lib에 추가해야합니다.

    나는 Hadoop-2.2.0을 사용하고 있으므로 $ HADOOP_HOME / share / hadoop / common / lib 디렉토리에 넣고 다음 명령을 사용하여 가져 오기를 수행합니다.

    HCAT_HOME = / home / Kuntal / BIG_DATA / hive-0.12.0 / hcatalog 내보내기

    (때로는 Hive의 HCatlog를 내보내거나 설정해야합니다.)

    ./sqoop-import --connect "jdbc : sqlserver : // IP \ INSTANCE; 포트 = 1433; 사용자 이름 = 사용자 이름; 암호 = 패스워드; 데이터베이스 = DATABASE_NAME"- 테이블 TABLE_NAME --target-dir hdfs : // localhost : 50315 / sqoop --m 1

    때로는 포트를 지정해야합니다. 그렇지 않으면 기본값이 작동합니다. 희망 당신은 그것이 유용하다고 생각합니다.

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

    3.이 sqoop 문서에 따르면, -libjars와 같은 일반 옵션은 도구 별 옵션 앞에 와야합니다.

    이 sqoop 문서에 따르면, -libjars와 같은 일반 옵션은 도구 별 옵션 앞에 와야합니다.

  4. from https://stackoverflow.com/questions/19597328/sqoop-sqlserver-failed-to-load-driver-appropriate-connection-manager-is-not-be by cc-by-sa and MIT license