2013-10-25 9 views
9

Ho scaricato sqljdbc4.jar. Sto invocando sqoop in questo modo dalla cartella (in cui è memorizzato il vaso):SQOOP SQLSERVER Impossibile caricare il driver "non viene impostata la gestione connessione appropriata"

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

sto ottenendo il seguente avviso & errore:

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

Ho cambiato la linea di comando in modo da riflettere i commenti qui sotto, ottengo lo stesso errore:

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) 

Quando guardo la quotazione di sqljdbc4.jar, faccio vedere la classe in quel percorso ... È possibile che libjars option non stia facendo ciò che penso che dovrebbe fare?

+0

Hai risolto il problema? – Cos

risposta

2

Secondo this sqoop documentation, opzioni generiche come -libjars devono venire prima specifiche dell'utensile opzioni:

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

Grazie a @Mark Rotteveel. Ci ho provato ma senza fortuna. Aggiornerò la mia domanda – hba

2

In stragrande maggioranza dei casi utilizzando il parametro --driver non è necessario e anche di più porterà ad un comportamento indesiderato. Consiglio vivamente di eliminare completamente questo argomento dalla riga di comando. Controlla il post sul blog Connectors vs Drivers per ulteriori dettagli.

Inoltre, si specifica una classe di driver JDBC inesistente. Quello corretto è:

com.microsoft.sqlserver.jdbc.SQLServerDriver 

Lo si può vedere nel official docs, mentre si specifica

com.microsoft.jdbc.sqlserver.SQLServerDriver 

Avviso del diverso ordine di jdbc e sqlserver pacchetti. Questo è uno dei motivi per cui è consigliabile non utilizzare l'opzione --driver.

+0

Grazie @Jarek Jarcec Cecho - ho rimosso le impostazioni del driver, sto ancora ricevendo lo stesso problema ... aggiornerò la mia domanda per riflettere il cambiamento. – hba

3

è necessario mettere in sqljdbc4.jar$SQOOP_HOME/lib e anche aggiungere sqoop-1.4.4.jar o qualunque versione utilizzata insieme a sqljdbc4.jar-$HADOOP_HOME/lib.

sto usando Hadoop-2.2.0, così ho messo dentro $HADOOP_HOME/share/hadoop/common/lib directory, e utilizzare il seguente comando per fare l'importazione:

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

(a volte HCatlog di Hive deve essere export ED o 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

a volte è necessario specificare la porta, altrimenti d efault funziona. Spero che tu lo trovi utile

Problemi correlati