Cheolsoo Park created SQOOP-481:
-----------------------------------
Summary: Sqoop import with --have-import using wrong column names
in --columns throws a NPE
Key: SQOOP-481
URL: https://issues.apache.org/jira/browse/SQOOP-481
Project: Sqoop
Issue Type: Bug
Reporter: Cheolsoo Park
Assignee: Cheolsoo Park
To reproduce the error,
1) Create a table "foo" with a column name "I" on Oracle DB
2) Run sqoop import --connect jdbc:oracle:thin:@//localhost/xe --username ****
--password **** --verbose --table foo --split-by i --columns i --hive-import
This generates the following call stack:
12/05/01 16:12:00 ERROR sqoop.Sqoop: Got exception running Sqoop:
java.lang.NullPointerException
java.lang.NullPointerException
at
com.cloudera.sqoop.hive.TableDefWriter.getCreateTableStmt(TableDefWriter.java:162)
at com.cloudera.sqoop.hive.HiveImport.importTable(HiveImport.java:195)
at com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:394)
at com.cloudera.sqoop.tool.ImportTool.run(ImportTool.java:455)
at com.cloudera.sqoop.Sqoop.run(Sqoop.java:146)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:182)
at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:221)
at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:230)
at com.cloudera.sqoop.Sqoop.main(Sqoop.java:239)
The reason is simple. In the following lines of code:
{code}
Integer colType = columnTypes.get(col);
...
tring hiveColType = connManager.toHiveType(colType);
{code}
colType is null because column "i" does not exist in the table "foo" but "I"
exists. Now toHiveType(int colType) tries to autocast a null to a primitive
int, resulting a NPE.
It would be better if more informative message is provided rather than a random
NPE.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira