sql-server - 索引超出范围 : JDBC SqlServer exception

标签 sql-server linux hadoop jdbc sqoop

我正在使用 Sqoop 将数据从 SQL 服务器导入到本地 HDFS。我正在使用一个简单的自由格式查询从表中提取大约 10 行。下面是我从终端执行的 sqoop 命令:

sqoop import --connect 'jdbc:sqlserver://xx.xx.xx.xx;username=xx;password=xxxxx;database=DBName' --query "SELECT top 10 OrderID from DJShopcart_OrderItems where \$CONDITIONS"  --split-by "OrderID" --target-dir  /work/gearpurchase

当我从我的本地机器执行这个时,我得到以下异常:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyValidColumnIndex(SQLServerResultSet.java:543) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(SQLServerResultSet.java:2066) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2099) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2084) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(SQLServerResultSet.java:2327) at org.apache.sqoop.lib.JdbcWritableBridge.readInteger(JdbcWritableBridge.java:52) at com.cloudera.sqoop.lib.JdbcWritableBridge.readInteger(JdbcWritableBridge.java:53) at QueryResult.readFields(QueryResult.java:105) at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:244)

如果我导入 2 列,异常显示索引 3 超出范围。

我检查了 SQLServerResultSet类文档也可以了解异常的原因但没有用。只是对客户端游标与服务器端游标等概念更加困惑

无论我尝试什么,我都无法得到这个简单的自由格式查询来从 SQL Server 导入数据。

Sqoop version : 1.4.6 
Hadoop : 2.7.3
Machine : Ubuntu 16.04

请帮帮我。提前致谢。

最佳答案

If I import 2 columns, the exception says index 3 is out of range.

那么问题出在SQOOP上。

at org.apache.sqoop.lib.JdbcWritableBridge.readInteger(JdbcWritableBridge.java:52)

因为它将 3 作为参数传递给

at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(SQLServerResultSet.java:2327)

当结果只包含2列,且有效列索引为1和2时

关于sql-server - 索引超出范围 : JDBC SqlServer exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44828930/

相关文章:

sql-server - 使用 RODBC 和 MS SQL Server 长时间运行的查询超时

sql-server - 如何在数据透视 SQL 查询中用零替换 null

linux - 如何在离线环境下使用 Cargo 构建项目?

hadoop - Apache Pig:在foreach引用顶级字段内应用LIMIT

hadoop - tez session 没有在 hive 中开始

sql - SQL Server 2008中如何限制用户只能访问一种模式的对象?

sql-server - 增加 SQL Server 代理中的文本大小

regex - Ansible 正则表达式从/etc/hosts 中删除匹配的 IP

c - 如何在 C 程序中以秒为单位打印 CMOS 时间?

hadoop - 所有查询的 Hive 错误 : Couldn't find log associated with operation handle