Hadoop Sqoop从SybaseIQ导入到Hive-java.io.IOException:nextKeyValue中的SQLException

Hadoop Sqoop从SybaseIQ导入到Hive-java.io.IOException:nextKeyValue中的SQLException,hadoop,jdbc,sqoop,sap-iq,Hadoop,Jdbc,Sqoop,Sap Iq,当我试图将表导入到配置单元时,我遇到了一个奇怪的错误 查询: sqoop import --connect 'jdbc:sybase:Tds:10.100.*.***:5500/DATABASE=****' --driver 'com.sybase.jdbc3.jdbc.SybDriver' --username "****" --password "***" --table dw.dm_court_courttype --direct -m 1 --hive-import --create-

当我试图将表导入到配置单元时,我遇到了一个奇怪的错误

查询:

sqoop import  --connect 'jdbc:sybase:Tds:10.100.*.***:5500/DATABASE=****' --driver 'com.sybase.jdbc3.jdbc.SybDriver' --username "****" --password "***" --table dw.dm_court_courttype --direct -m 1 --hive-import --create-hive-table --hive-table DM_court_courtcype --target-dir "/user/hive/warehouse/DM_Court_CourtType" --verbose
错误:

java.io.IOException:nextKeyValue中的SQLException 位于org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:277) 位于org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:565) 位于org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80) 位于org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:91) 位于org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145) 位于org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64) 位于org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:796) 位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:346) 位于org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163) 位于java.security.AccessController.doPrivileged(本机方法) 位于javax.security.auth.Subject.doAs(Subject.java:415) 位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1595) 位于org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 原因:com.sybase.jdbc3.jdbc.SybSQLException:SQL Anywhere错误-131:第1行“.”附近的语法错误 位于com.sybase.jdbc3.tds.tds.a(未知源) 位于com.sybase.jdbc3.tds.tds.nextResult(未知源) 位于com.sybase.jdbc3.tds.tds.getResultSetResult(未知源) 位于com.sybase.jdbc3.tds.TdsCursor.open(未知源代码) 位于com.sybase.jdbc3.jdbc.SybStatement.executeQuery(未知源) 位于com.sybase.jdbc3.jdbc.SybPreparedStatement.executeQuery(未知源) 位于org.apache.sqoop.mapreduce.db.DBRecordReader.executeQuery(DBRecordReader.java:111) 位于org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:235) ... 还有12个


不要将数据库名称与表名称一起使用

使用
--表dm\u court\u court type
代替
——表dw.dm\u court\u court type

试试这个:

sqoop import --connect 'jdbc:sybase:Tds:10.100..:5500/DATABASE=****' --driver 'com.sybase.jdbc3.jdbc.SybDriver' --username "****" --password "*" --table dm_court_courttype --direct -m 1 --hive-import --create-hive-table --hive-table DM_court_courtcype --target-dir "/user/hive/warehouse/DM_Court_CourtType" --verbose

这三个命令中的一些不是多余的吗?--hive import--create hive table--hive table实际上我正要问一个问题topic@IgnacioAlorre我只是修改OP的命令。所有这些都不是多余的。使用
--hive table
,可以设置配置单元表的名称。是的--配置单元导入`将自动创建配置单元表。因此,
--create hive table
标记可以在这里跳过。@dev实际上得到了相同的错误!如果我删除架构名称表not found,则引发异常。此异常仅在使用-direct import时引发。如果我使用“select*from table”,查询就可以了!我在这里遗漏了什么?@kartee如果您删除
-direct
(而不是从表中选择*),同样的查询也会工作吗?@kartee我对sybase不太熟悉。数据库和模式是否有所不同?有些RDBMS只有数据库或模式与用户名紧密耦合