2017-06-29 8 views
0

Ich verwende Sqoop, um Daten vom SQL Server in das lokale HDFS zu importieren. Ich verwende eine einfache freie Form Abfrage, um einige 10 Zeilen aus der Tabelle zu ziehen. Unten ist der Sqoop Befehl, den ich aus dem Terminal ausführen:Index liegt außerhalb des gültigen Bereichs: JDBC SqlServer exception

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 

Als ich das von meinem lokalen Rechner ausführen, bekomme ich die folgende Ausnahme:

Verursacht durch: com.microsoft.sqlserver.jdbc .SQLServerException: Der Index 2 liegt außerhalb des zulässigen Bereichs. bei com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError (SQLServerException.java:191) bei com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyValidColumnIndex (SQLServerResultSet.java:543) bei com.microsoft.sqlserver. jdbc.SQLServerResultSet.getterGetColumn (SQLServerResultSet.java:2066) bei com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue (SQLServerResultSet.java:2099) bei com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue (SQLServerResultSet. java: 2084) um com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt (SQLServerResultSet.java:2327) um org.apa che.sqoop.lib.JdbcWritableBridge.readInteger (JdbcWritableBridge.java:52) bei com.cloudera.sqoop.lib.JdbcWritableBridge.readInteger (JdbcWritableBridge.java:53) bei QueryResult.readFields (QueryResult.java:105) bei org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue (DBRecordReader.java:244)

Wenn ich 2 Spalten importieren, sagt die Ausnahme 3-Index außerhalb des Bereichs liegt.

Ich überprüfte die SQLServerResultSet Klassendokumentation auch, um zu verstehen, was die Ursache der Ausnahme sein konnte, aber zu keiner Verwendung. Nur mehr mit Konzepten wie Client-Side Cursor vs Server-Side Cursor verwirrt

Egal, was ich versuche, kann ich nicht erhalten diese einfache freie Form Abfrage Daten von SQL-Server zu importieren.

Sqoop version : 1.4.6 
Hadoop : 2.7.3 
Machine : Ubuntu 16.04 

Bitte helfen Sie mir. Danke im Voraus.

Antwort

1

Wenn ich 2 Spalten importiere, sagt die Ausnahme, dass Index 3 außerhalb des Bereichs liegt.

Dann liegt der Fehler bei SQOOP.

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

Wie es vorbei 3 als Argument an

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

Wenn das Ergebnis nur zwei Spalten enthält, und die gültigen Spaltenindizes sind 1 und 2.

Verwandte Themen