2013-03-14 277 views
1

我正嘗試使用Sqoop從Sybase導入數據。從日誌我可以說,我已經被迫成功地做了一個連環。 但我的工作沒有給我一些來自Sybase的Sql異常。我不主要在Sybase上工作,所以 無法挖掘出這個錯誤。我的來源中只有一位來自Sybase。使用Sqoop從Sybase導入數據的問題

我用下面的命令:

sqoop import --verbose \ 
--driver com.sybase.jdbc3.jdbc.SybDriver \ 
--connect jdbc:sybase:Tds:nyhostx123.sm.com:13290/DATABASE=tempdb \ 
--table tempdb..mit \ 
--split-by sipid \ 
--fields-terminated-by ',' \ 
--target-dir /home/DEVTEST/sqoop_mit \ 
--username user01 \ 
-m 1 \ 
-P 

錯誤段:

13/03/14 07:36:19 INFO mapred.JobClient: Running job: job_201301151126_25936 
13/03/14 07:36:20 INFO mapred.JobClient: map 0% reduce 0% 
13/03/14 07:36:27 INFO mapred.JobClient: Task Id : attempt_201301151126_25936_m_000000_0, Status : FAILED 
java.io.IOException: SQLException in nextKeyValue 
     at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:265) 
     at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:456) 
     at org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:67) 
     at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:143) 
     at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:182) 
     at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647) 
     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323) 
     at org.apache.hadoop.mapred.Child$4.run(Child.java:266) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Subject.java:396) 
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1278) 
     at org.apache.hadoop.mapred.Child.main(Child.java:260) 
Caused by: com.sybase.jdbc3.jdbc.SybSQLException: Incorrect syntax near '.'. 

     at com.sybase.jdbc3.tds.Tds.a(Unknown Source) 
     at 
attempt_201301151126_25936_m_000000_0: log4j:WARN No appenders could be found for logger (org.apache.hadoop.hdfs.DFSClient). 
attempt_201301151126_25936_m_000000_0: log4j:WARN Please initialize the log4j system properly. 
13/03/14 07:36:33 INFO mapred.JobClient: Task Id : attempt_201301151126_25936_m_000000_1, Status : FAILED 
java.io.IOException: SQLException in nextKeyValue 
+0

這是用於Sybase ASA/SQLAnywhere還是ASE?什麼版本? – 2013-03-15 07:42:01

回答

0

我認爲這個問題是在--table參數。 Sqoop期待純表名,但你似乎傳遞了額外的值「tempdb ..」(我猜這是一個db名稱?)。你介意只用「--table mit」來試試嗎?

+0

我也試過這個選項。 (--table mit)。但是,那麼Sqoop沒有認出這張桌子。我得到了這個錯誤消息「找不到,指定owner.objectname或使用sp_help檢查對象是否存在(sp_help可能會產生大量輸出)。」 – dipeshtech 2013-03-15 05:42:59

+0

登錄到數據庫並在tempdb數據庫中手動發出「sp_help mit」會發生什麼? – 2013-03-15 15:25:32

+0

sqoop import --verbose --driver com.sybase.jdbc3.jdbc.SybDriver --connect jdbc:sybase:ddd:ny0xxwxx.rr.com:13290/doy/interfaces --query「select * from tempdb。 .dd_indic where \ $ CONDITIONS「--fields-terminated-by',' --target-dir/TTS/DEVTEST/try_indic --username muniretail -m 1 -PI告訴錯誤的db。休息一切都很好。 – dipeshtech 2013-05-03 12:50:55