[HADOOP] SQOOP SQLSERVER "적절한 연결 관리자가 설정되지 않았습니다"드라이버를로드하지 못했습니다.
HADOOPSQOOP 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 =
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.매개 변수를 사용하는 대다수의 경우에 --driver는 필수가 아니며 더 많은 경우 바람직하지 않은 동작을 유발할 수 있습니다. 명령 줄에서이 인수를 완전히 삭제하는 것이 좋습니다. 자세한 내용은 커넥터 대 드라이버 블로그 게시물을 확인하십시오.
매개 변수를 사용하는 대다수의 경우에 --driver는 필수가 아니며 더 많은 경우 바람직하지 않은 동작을 유발할 수 있습니다. 명령 줄에서이 인수를 완전히 삭제하는 것이 좋습니다. 자세한 내용은 커넥터 대 드라이버 블로그 게시물을 확인하십시오.
또한 존재하지 않는 JDBC 드라이버 클래스를 지정하고 있습니다. 올바른 것 :
com.microsoft.sqlserver.jdbc.SQLServerDriver
공식 문서에서 볼 수 있지만
com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc 및 sqlserver 패키지의 다른 순서에 유의하십시오. --driver 옵션을 전혀 사용하지 않는 것이 좋습니다 이유 중 하나입니다.
-
==============================
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.이 sqoop 문서에 따르면, -libjars와 같은 일반 옵션은 도구 별 옵션 앞에 와야합니다.
이 sqoop 문서에 따르면, -libjars와 같은 일반 옵션은 도구 별 옵션 앞에 와야합니다.
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
'HADOOP' 카테고리의 다른 글
[HADOOP] 클러스터 모드의 Spark를 사용하여 로컬 시스템에 파일 쓰기 (0) | 2019.07.19 |
---|---|
[HADOOP] Hadoop 3.0에서 CopyMerge를 수행하는 방법은 무엇입니까? (0) | 2019.07.19 |
[HADOOP] Hadoop : 클러스터에 여러 IP 주소 바인딩 NameNode (0) | 2019.07.15 |
[HADOOP] HIVE 테이블에서 가장 최근의 파티션을 찾는 방법 (0) | 2019.07.15 |
[HADOOP] 파이썬과 하이브 간의 연결 (1) | 2019.07.15 |