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




Reply via email to