SQOOP SQLSERVER无法加载驱动程序“适当的连接管理器没有被设置“ [英] SQOOP SQLSERVER Failed to load driver " appropriate connection manager is not being set"

查看:1058
本文介绍了SQOOP SQLSERVER无法加载驱动程序“适当的连接管理器没有被设置“的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我下载了 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 exported 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆