[ 
https://issues.apache.org/jira/browse/HIVE-3392?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13451895#comment-13451895
 ] 

Ajesh Kumar commented on HIVE-3392:
-----------------------------------

All DDL statement are calling Hive.getTable() method which internally invoke 
checkValidity() method.
checkValidity() method internally tries to fetch all the columns using 
Hive.getFieldsFromDeserializer(getTableName(), getDeserializer()) method.
So while trying to drop the table, it tries to get the Deserializer and causes 
the exception.

As a resolution we should bypass the checkValidity() method for drop command.

I have tested in local and is working fine.  Let me know your comments so that 
I can work on the patch.

                
> Hive unnecessarily validates table SerDes when dropping a table
> ---------------------------------------------------------------
>
>                 Key: HIVE-3392
>                 URL: https://issues.apache.org/jira/browse/HIVE-3392
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Jonathan Natkins
>
> natty@hadoop1:~$ hive
> hive> add jar 
> /home/natty/source/sample-code/custom-serdes/target/custom-serdes-1.0-SNAPSHOT.jar;
> Added 
> /home/natty/source/sample-code/custom-serdes/target/custom-serdes-1.0-SNAPSHOT.jar
>  to class path
> Added resource: 
> /home/natty/source/sample-code/custom-serdes/target/custom-serdes-1.0-SNAPSHOT.jar
> hive> create table test (a int) row format serde 'hive.serde.JSONSerDe';      
>       
> OK
> Time taken: 2.399 seconds
> natty@hadoop1:~$ hive
> hive> drop table test;                                                        
>        
> FAILED: Hive Internal Error: 
> java.lang.RuntimeException(MetaException(message:org.apache.hadoop.hive.serde2.SerDeException
>  SerDe hive.serde.JSONSerDe does not exist))
> java.lang.RuntimeException: 
> MetaException(message:org.apache.hadoop.hive.serde2.SerDeException SerDe 
> hive.serde.JSONSerDe does not exist)
>       at 
> org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:262)
>       at 
> org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:253)
>       at org.apache.hadoop.hive.ql.metadata.Table.getCols(Table.java:490)
>       at 
> org.apache.hadoop.hive.ql.metadata.Table.checkValidity(Table.java:162)
>       at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:943)
>       at 
> org.apache.hadoop.hive.ql.parse.DDLSemanticAnalyzer.analyzeDropTable(DDLSemanticAnalyzer.java:700)
>       at 
> org.apache.hadoop.hive.ql.parse.DDLSemanticAnalyzer.analyzeInternal(DDLSemanticAnalyzer.java:210)
>       at 
> org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:243)
>       at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:430)
>       at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:337)
>       at org.apache.hadoop.hive.ql.Driver.run(Driver.java:889)
>       at 
> org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:255)
>       at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:212)
>       at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:403)
>       at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:671)
>       at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:554)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at org.apache.hadoop.util.RunJar.main(RunJar.java:208)
> Caused by: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException 
> SerDe com.cloudera.hive.serde.JSONSerDe does not exist)
>       at 
> org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:211)
>       at 
> org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:260)
>       ... 20 more
> hive> add jar 
> /home/natty/source/sample-code/custom-serdes/target/custom-serdes-1.0-SNAPSHOT.jar;
> Added 
> /home/natty/source/sample-code/custom-serdes/target/custom-serdes-1.0-SNAPSHOT.jar
>  to class path
> Added resource: 
> /home/natty/source/sample-code/custom-serdes/target/custom-serdes-1.0-SNAPSHOT.jar
> hive> drop table test;
> OK
> Time taken: 0.658 seconds
> hive> 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to