I have table in hive in which i have to update certain records. I am using hive 0.13 version. I did bit of googling and found that i can use If-Else statement with insert overwrite for doing this but after running a query it is throwing null pointer exception.
Here is my Employee table:
1 emp1
2 emp2
3 emp3
4 emp4
5 emp5
I created another table employee_incr with same schema as employee and ran this query to get updated records.
insert overwrite table employee_incr select employee.id,employee.ename,if(employee.id=”1″,12,employee.id ) as employee.id from employee;
Here is trace from Hive.
2015-07-24 09:55:05,351 INFO [main]: session.SessionState (SessionState.java:start(361)) – No Tez session required at this point. hive.execution.engine=mr.
2015-07-24 09:55:05,391 INFO [main]: log.PerfLogger (PerfLogger.java:PerfLogBegin(108)) – <PERFLOG method=Driver.run from=org.apache.hadoop.hive.ql.Driver>
2015-07-24 09:55:05,392 INFO [main]: log.PerfLogger (PerfLogger.java:PerfLogBegin(108)) – <PERFLOG method=TimeToSubmit from=org.apache.hadoop.hive.ql.Driver>
2015-07-24 09:55:05,392 INFO [main]: ql.Driver (Driver.java:checkConcurrency(159)) – Concurrency mode is disabled, not creating a lock manager
2015-07-24 09:55:05,395 INFO [main]: log.PerfLogger (PerfLogger.java:PerfLogBegin(108)) – <PERFLOG method=compile from=org.apache.hadoop.hive.ql.Driver>
2015-07-24 09:55:05,422 INFO [main]: log.PerfLogger (PerfLogger.java:PerfLogBegin(108)) – <PERFLOG method=parse from=org.apache.hadoop.hive.ql.Driver>
2015-07-24 09:55:05,426 INFO [main]: parse.ParseDriver (ParseDriver.java:parse(185)) – Parsing command: insert overwrite table employee_incr select employee.id,employee.ename,if(employee.id=1,12,employee.id ) as employee.id from employee
2015-07-24 09:55:05,709 ERROR [main]: ql.Driver (SessionState.java:printError(547)) – FAILED: NullPointerException null
java.lang.NullPointerException
at org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:37646)
at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:36884)
at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:36760)
at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1338)
at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1036)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:199)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:409)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:323)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:980)
at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1045)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:916)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:906)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:268)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:423)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:359)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:743)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:686)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)