SQOOP SQLSERVER无法加载驱动程序“适当的连接管理器没有被设置“ [英] SQOOP SQLSERVER Failed to load driver " appropriate connection manager is not being set"
问题描述
我下载了 sqljdbc4.jar
。我从文件夹(存储jar的地方)调用 sqoop
:
$ b $ p $
sqoop 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设置为显式驱动程序,但适当连接管理器没有被设置(通过 - 连接管理器)。 Sqoop将回退到org.apache.sqoop.manager.GenericJdbcManager。请明确指定下次使用哪个连接管理器。
13/10/25 18: 38:13 INFO manager.SqlManager:使用默认的fetchSize 1000
13/10/25 18:38:13错误sqoop.Sqoop:运行Sqoop异常:java.lang.RuntimeException:无法加载db驱动类: com.microsoft.jdbc.sqlserver.SQLServerDriver
java.lang.RuntimeException:无法在org.apache.sqoop.manager.SqlManager中加载数据库驱动程序类:com.microsoft.jdbc.sqlserver.SQLServerDriver
。 makeConnection(SqlManager.java:727)
at org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52)
at org.apache.sqoop.manager.SqlManager.listTables(SqlManager。
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)
在org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
在org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
在org.apache.sqoop.Sqoop .main(Sqoop.java:238)
更新
我改变了命令行以反映下面的注释,我得到了同样的错误:
sqoop list-databases -libjars =< ABSOLUTE_PATH> /jars/sqljdbc4.jar --connect jdbc:sqlserver:// localhost:1433; user = me; password = password
13/10/28 17:00:33错误sqoop.Sqoop:运行Sqoop异常:java.lang.RuntimeException:无法加载db驱动类: com.microsoft.sqlserver.jdbc.SQLServerDriver
java.lang.RuntimeException:无法在org.apache.sqoop.manager.SqlManager中加载数据库驱动程序类:com.microsoft.sqlserver.jdbc.SQLServerDriver
。 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)
在org.apache.sqoop.Sqoop.main(Sqoop.java:238)
当我看在 sqljdbc4.jar
的列表中,我确实看到了该路径中的类...是否可能是 libjars选项
是不是在做我认为应该做的事? 你需要把 sqljdbc4 .jar
位于 $ SQOOP_HOME / lib
中,并添加 sqoop-1.4.4.jar
或者你使用的任何版本以及 sqljdbc4.jar
到 $ H ADOOP_HOME / lib
。
我使用 Hadoop-2.2.0
,所以我把它放在 $ HADOOP_HOME / share / hadoop / common / lib
目录中,并使用以下命令来执行导入:
export HCAT_HOME = / home / Kuntal / BIG_DATA / hive-0.12.0 / hcatalog
有时候 HCatlog
的Hive必须是 export
ed或 set
。)
./ sqoop-import --connectjdbc:sqlserver:// IP \INSTANCE; port = 1433; username = USERNAME ; password = PASSWORD; database = DATABASE_NAME--table TABLE_NAME --target-dir hdfs:// localhost:50315 / sqoop --m 1
有时你必须指定端口,否则默认工作。希望你觉得它有用。
I downloaded sqljdbc4.jar
. I'm invoking sqoop
like so from the folder (where the jar is stored):
sqoop list-tables --driver com.microsoft.jdbc.sqlserver.SQLServerDriver --connect jdbc:sqlserver://localhost:1433;user=me;password=myPassword; -libjars=./sqljdbc4.jar
I'm getting the following warning & error:
13/10/25 18:38:13 WARN sqoop.ConnFactory: Parameter --driver is set to an explicit driver however appropriate connection manager is not being set (via --connection-manager). Sqoop is going to fall back to org.apache.sqoop.manager.GenericJdbcManager. Please specify explicitly which connection manager should be used next time.
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)
UPDATE
I changed the command line to reflect the comments below, I get the same error:
sqoop list-databases -libjars=<ABSOLUTE_PATH>/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)
When I look at the listing of sqljdbc4.jar
, I do see the class in that path... Is it possible that libjars option
isn't doing what I think it is supposed to do?
You need to put sqljdbc4.jar
in $SQOOP_HOME/lib
and also add sqoop-1.4.4.jar
or whatever version you are using along with sqljdbc4.jar
to $HADOOP_HOME/lib
.
I'm using Hadoop-2.2.0
, so i put it inside $HADOOP_HOME/share/hadoop/common/lib
directory, and use the following command to do the import:
export HCAT_HOME=/home/Kuntal/BIG_DATA/hive-0.12.0/hcatalog
(sometimes HCatlog
of Hive needs to be export
ed or set
.)
./sqoop-import --connect "jdbc:sqlserver://IP\INSTANCE;port=1433;username=USERNAME;password=PASSWORD;database=DATABASE_NAME" --table TABLE_NAME --target-dir hdfs://localhost:50315/sqoop --m 1
Sometimes you have to specify the port, otherwise default works. Hope you find it useful.
这篇关于SQOOP SQLSERVER无法加载驱动程序“适当的连接管理器没有被设置“的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!