[
https://issues.apache.org/jira/browse/HIVE-4795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13699539#comment-13699539
]
Caleb Jones commented on HIVE-4795:
-----------------------------------
Viji, I think that makes sense. Rather than re-architect how serdes work,
simply provide the ability for people to correct problems in tables which
reference orphaned serdes. Perhaps a "--disableSerdeValidation" flag or
something like that.
> Delete/Alter/Describe actions fail when SerDe is not on class path
> ------------------------------------------------------------------
>
> Key: HIVE-4795
> URL: https://issues.apache.org/jira/browse/HIVE-4795
> Project: Hive
> Issue Type: Bug
> Components: CLI
> Affects Versions: 0.10.0
> Environment: CDH 4.2
> java version "1.6.0_24"
> Reporter: Caleb Jones
> Labels: serde
>
> *Use case:*
> Old table was created using a SerDe and system has gone through some
> re-configuration resulting in that serde no longer being used and hence
> removed. Actions necessary to identify and fix the offending tables (e.g.
> describe, alter, delete) fail due to the SerDe no longer being there.
> *Repro Steps:*
> 1. Create table that uses a SerDe loaded in externally (via "add jar ...")
> 2. Remove the jar that the SerDe comes from
> 3. Attempt to describe, alter (set serde ...), or delete the table created in
> step #1
> *Expected Behavior:*
> Regardless of the status of the SerDe behind the table, perform those
> actions. Loading the SerDe shouldn't be a requirement to do so.
> *Actual Behavior:*
> SerDeException thrown:
> {noformat}
> org.apache.hadoop.hive.serde2.SerDeUtils.lookupDeserializer(SerDeUtils.java:86)
> org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:207)
> org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:266)
> org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:259)
> org.apache.hadoop.hive.ql.metadata.Table.getCols(Table.java:585)
> org.apache.hadoop.hive.ql.metadata.Table.checkValidity(Table.java:168)
> org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:967)
> org.apache.hadoop.hive.ql.parse.DDLSemanticAnalyzer.addInputsOutputsAlterTable(DDLSemanticAnalyzer.java:1109)
> org.apache.hadoop.hive.ql.parse.DDLSemanticAnalyzer.analyzeAlterTableSerde(DDLSemanticAnalyzer.java:1037)
> org.apache.hadoop.hive.ql.parse.DDLSemanticAnalyzer.analyzeInternal(DDLSemanticAnalyzer.java:214)
> ...
> {noformat}
> or
> {noformat}
> java.lang.RuntimeException:
> MetaException(message:org.apache.hadoop.hive.serde2.SerDeException SerDe
> f.q.c.n.MySerDe does not exist)
> at
> org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:268)
> at
> org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:259)
> at org.apache.hadoop.hive.ql.metadata.Table.getCols(Table.java:585)
> at org.apache.hadoop.hive.ql.metadata.Table.checkValidity(Table.java:168)
> at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:967)
> at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:868)
> at
> org.apache.hadoop.hive.ql.parse.DDLSemanticAnalyzer$QualifiedNameUtil.getAttemptTableName(DDLSemanticAnalyzer.java:1420)
> at
> org.apache.hadoop.hive.ql.parse.DDLSemanticAnalyzer$QualifiedNameUtil.getTableName(DDLSemanticAnalyzer.java:1478)
> ....
> {noformat}
> *Workaround:*
> Find SerDe that the problematic table was configured to use (which may not
> readily be possible), and manually load it (via 'add jar ...') in order to
> fix the problem.
--
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