2013-10-25 2 views
9

I heruntergeladen sqljdbc4.jar. Ich Aufruf sqoop wie so aus dem Ordner (wo das Glas gespeichert ist):SQOOP SQLSERVER Fehler beim Laden des Treibers "Der entsprechende Verbindungsmanager wird nicht eingestellt"

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

Ich erhalte die folgende Warnung & Fehler:

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) 

AKTUALISIEREN

ich die Befehlszeile geändert, um die Kommentare unten zu reflektieren, erhalte ich den gleichen Fehler:

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) 

Als ich bei der Auflistung der sqljdbc4.jar aussehen, ich tun, um die Klasse in diesem Pfad sehen ... Ist es möglich, dass libjars option nicht tut, was ich denke, dass es tun soll?

+0

Haben Sie es geschafft, dies zu beheben? – Cos

Antwort

2

Nach this sqoop documentation, allgemeinen Optionen wie -libjars müssen kommen vor werkzeugspezifische Optionen:

Generic Hadoop command-line arguments:
(must preceed any tool-specific arguments)
...
-libjars <comma separated list of jars> specify comma separated jar files to include in the classpath.

+0

Danke @Mark Rotteveel. Ich habe das versucht, aber kein Glück. Ich werde meine Frage aktualisieren. – hba

2

In meisten Fällen mit dem Parameter --driver ist nicht erforderlich, und noch mehr werden zu einem unerwünschten Verhalten führen. Ich würde dringend empfehlen, dieses Argument vollständig von Ihrer Befehlszeile zu löschen. Weitere Informationen finden Sie unter Connectors vs Drivers Blogpost.

Zusätzlich geben Sie eine nicht vorhandene JDBC-Treiberklasse an. Die richtige ist:

com.microsoft.sqlserver.jdbc.SQLServerDriver 

Sie es in der official docs sehen können, während Sie

com.microsoft.jdbc.sqlserver.SQLServerDriver 

Beachten Sie die unterschiedliche Reihenfolge der jdbc und sqlserver Pakete angeben. Dies ist einer der Gründe, warum es empfohlen wird, die Option --driver überhaupt nicht zu verwenden.

+0

Vielen Dank @ Jarek Jarcec Cecho - ich habe die Treibereinstellung entfernt, ich bekomme immer noch das gleiche Problem ... Ich werde meine Frage aktualisieren, um die Änderung widerzuspiegeln. – hba

3

Sie müssen sqljdbc4.jar in $SQOOP_HOME/lib setzen und auch sqoop-1.4.4.jar hinzuzufügen, oder was auch immer Version Sie verwenden mit sqljdbc4.jar-$HADOOP_HOME/lib zusammen.

Ich verwende Hadoop-2.2.0, so dass ich legte es in $HADOOP_HOME/share/hadoop/common/lib Verzeichnis, und verwenden Sie den folgenden Befehl, um den Import zu tun:

export HCAT_HOME=/home/Kuntal/BIG_DATA/hive-0.12.0/hcatalog

(manchmal HCatlog von Hive braucht export ed oder set sein.

)

./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

Manchmal müssen Sie den Port angeben, sonst d Standard funktioniert. Ich hoffe, Sie finden es nützlich.

Verwandte Themen