Hi, I have been trying to import an external table to Hive from SQL Server using Hive generic JDBC Storage handler, but I am seeing the following error, when I run this command:
CREATE EXTERNAL TABLE Region( regionid int, regiondescription string) STORED BY "org.apache.hive.storage.jdbc.JdbcStorageHandler" TBLProperties( "hive.jdbc.driver.class" = "com.ddtek.jdbc.sqlserver.SQLServerDriver", "hive.jdbc.url"="jdbc:datadirect:sqlserver://<Server>:1433", "hive.jdbc.username"="*", "hive.jdbc.password"="*", "hive.sql.query" = "SELECT REGIONID, REGIONDESCRIPTION FROM Northwind.dbo.Region", "hive.sql.column.mapping" = "regionid=REGIONID, regiondescription=REGIONDESCRIPTION", "hive.sql.dbcp.maxActive" = "1" ); Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.NullPointerException In the Hive logs, I am seeing this exception: 2017-10-18T13:02:32,735 INFO [12e7d5a1-9951-4bbb-9b01-4781bfdd619d main] ql.Driver: Executing command(queryId=hduser_20171018130226_817c0871-bd57-4301-928b-c5cb3a42976c): CREATE EXTERNAL TABLE Region( regionid int, regiondescription string) STORED BY "org.apache.hive.storage.jdbc.JdbcStorageHandler" TBLProperties( "hive.jdbc.driver.class" = "com.ddtek.jdbc.sqlserver.SQLServerDriver", "hive.jdbc.url"="jdbc:datadirect:sqlserver://10.30.211.140:1433", "hive.jdbc.username"="datadirect", "hive.jdbc.password"="datadirect", "hive.sql.query" = "SELECT REGIONID, REGIONDESCRIPTION FROM Northwind.dbo.Region", "hive.sql.column.mapping" = "regionid=REGIONID, regiondescription=REGIONDESCRIPTION", "hive.sql.dbcp.maxActive" = "1" ) 2017-10-18T13:02:32,749 INFO [12e7d5a1-9951-4bbb-9b01-4781bfdd619d main] ql.Driver: Starting task [Stage-0:DDL] in serial mode 2017-10-18T13:02:32,751 INFO [12e7d5a1-9951-4bbb-9b01-4781bfdd619d main] plan.CreateTableDesc: Use StorageHandler-supplied org.apache.hive.storage.jdbc.JdbcSerDe for table Region 2017-10-18T13:02:33,452 INFO [12e7d5a1-9951-4bbb-9b01-4781bfdd619d main] exec.DDLTask: creating table default.Region on null 2017-10-18T13:02:33,556 ERROR [12e7d5a1-9951-4bbb-9b01-4781bfdd619d main] metadata.Table: Unable to get field from serde: org.apache.hive.storage.jdbc.JdbcSerDe java.lang.NullPointerException at org.apache.hadoop.hive.metastore.MetaStoreUtils.getFieldsFromDeserializer(MetaStoreUtils.java:1426) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.metadata.Table.getColsInternal(Table.java:641) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.metadata.Table.getCols(Table.java:624) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:831) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:867) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4356) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:354) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:199) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:100) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2182) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1838) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1525) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1236) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1226) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:233) ~[hive-cli-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:184) ~[hive-cli-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:403) ~[hive-cli-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:821) ~[hive-cli-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759) ~[hive-cli-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686) ~[hive-cli-2.3.0.jar:2.3.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_101] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_101] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_101] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_101] at org.apache.hadoop.util.RunJar.run(RunJar.java:221) ~[hadoop-common-2.7.2.jar:?] at org.apache.hadoop.util.RunJar.main(RunJar.java:136) ~[hadoop-common-2.7.2.jar:?] 2017-10-18T13:02:33,600 ERROR [12e7d5a1-9951-4bbb-9b01-4781bfdd619d main] exec.DDLTask: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.NullPointerException at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:862) at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:867) at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4356) at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:354) at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:199) at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:100) at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2182) at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1838) at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1525) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1236) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1226) at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:233) at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:184) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:403) at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:821) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686) 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.run(RunJar.java:221) at org.apache.hadoop.util.RunJar.main(RunJar.java:136) Caused by: java.lang.NullPointerException at org.apache.hadoop.hive.metastore.MetaStoreUtils.getFieldsFromDeserializer(MetaStoreUtils.java:1426) at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:832) ... 22 more Can anyone please let me know what am I missing or doing incorrectly? Also, I was not able to find any documentation for JDBC Storage Handler, all the information I got about using this was from https://issues.apache.org/jira/browse/HIVE-1555 and https://github.com/apache/hive/commit/12b27a355558499f6422e49742bd5cad71416fb2#diff-4ab2f71883a411645591e2831b67af8b. If there is any documentation, can anyone please point me to that? Thanks, Sai