【问题标题】:Issue using Sqoop to import data from Sybase使用 Sqoop 从 Sybase 导入数据的问题
【发布时间】:2013-03-02 22:29:09
【问题描述】:

我正在尝试使用 Sqoop 从 Sybase 导入数据。从日志中我可以说我已经成功地进行了一次连接。 但是我的工作没有给我一些 Sybase 的 Sql 异常。我主要不是在 Sybase 上工作,所以 这个错误无法挖掘太多。我只有一个来源位于 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

【问题讨论】:

  • 这适用于 Sybase ASA/SQLAnywhere 还是 ASE?什么版本?

标签: database jdbc hadoop sybase sqoop


【解决方案1】:

我认为问题出在 --table 参数上。 Sqoop 期望纯表名,但您似乎传递了额外的值“tempdb..”(我猜这是一个数据库名称?)。你介意只用“--table mit”试试吗?

【讨论】:

  • 我也试过这个选项。 (--table mit)。但是,随后 Sqoop 无法识别该表。我收到此错误消息“未找到。指定 owner.objectname 或使用 sp_help 检查对象是否存在(sp_help 可能会产生大量输出)。”
  • 登录数据库后,在 tempdb 数据库中手动发出“sp_help mit”会发生什么?
  • sqoop 导入 --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 告诉了错误的数据库。休息一切都很好。
猜你喜欢
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 2014-07-23
  • 1970-01-01
相关资源
最近更新 更多