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只有数据库或模式与用户名紧密耦合