2013-04-13 53 views
1

如果爲oracle瘦提供(--connect/- user/- password),我可以在不提供--driver參數的情況下運行Sqoop。如何使用自定義JDBC驅動程序運行Sqoop?

但我需要使用自定義JDBC驅動程序(正確實現java.sql.Driver接口)來運行,而不是使用oracle.jdbc.OracleDriver。

我無法通過使用--driver參數對其進行驗證而無法正常工作。 和this suggestion根本沒有幫助。

如何使用Sqoop和自定義DB訪問驅動程序? 如何克服我得到的錯誤?

如果它與連接管理器有關,有人可以告訴我應該指定什麼連接管理器?

謝謝!

這裏就是我真正想要做的事:

./sqoop.sh import \ 
    --fs $HDFS --jt $JT \ 
    --connect <cutom-connection-string> --username username --password password \ 
    --table SYS.ALL_TABLES --split-by TABLE_NAME --target-dir /temp/try/110 --verbose \ 
    --driver xx.xx.xx.MyDriver 

我得到一個錯誤:

ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: ORA-00933: SQL command not properly ended

更多的錯誤信息:

DEBUG tool.BaseSqoopTool: Enabled debug logging. 
WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 
DEBUG sqoop.ConnFactory: Loaded manager factory: com.cloudera.sqoop.manager.DefaultManagerFactory 
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. 
INFO manager.SqlManager: Using default fetchSize of 1000 
INFO tool.CodeGenTool: Beginning code generation 
INFO xx.xx.xx.MyDriver: xx.xx.xx.MyDriver registered successfully. 
DEBUG manager.SqlManager: No connection paramenters specified. Using regular API for making connection. 
INFO xx.xx.xx.MyDriver: Returning database connection 
DEBUG manager.SqlManager: Using fetchSize for next query: 1000 
INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM SYS.ALL_TABLES AS t WHERE 1=0 
ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: ORA-00933: SQL command not properly ended 

java.sql.SQLException: ORA-00933: SQL command not properly ended 

回答

1

您的自定義JDBC驅動程序正確使用。這個問題似乎出現在使用中的通用jdbc連接器中,而且似乎正在生成無效查詢。您可能還需要將驅動程序替換爲您的自定義驅動程序,以便在Oracle connector中分離此版本。

Jarcec

+0

是的,謝謝。 我終於不得不做一些奇怪的擴展的sqoop連接管理器類和替換驅動程序返回在那裏:) – Bohdan