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

Joydeep Sen Sarma commented on HIVE-207:
----------------------------------------

I like Zheng's proposal.

The only thing that concerns me is whether the SerDe might find it expensive to 
bootstrap off DDLColumnInfo. for example - the following would be equivalent - 
but would allow the SerDe to cache some transformed/serialized version off the 
DDLInfo in it's own properties that  might be easier (ie. cheaper) for the 
SerDe to bootstrap off:

- at table creation time - we know the serde/deserializer
- we call a new method in the Deserializer that translates DDLInfo to some 
properties:

interface SerDe {
...
Properties schemaToProperties(List<DDLColumnInfo) throws 
UnsupportedSchemaException;
...
}

we store the returned Properties as part of SerDeProperties in metastore 
(that's available in the serde initialize call). The initialize() call 
signature can be what Zheng proposed. But if the SerDe wants - it can cache a 
serialized version of the schema in the properties that it finds easier to 
handle. This will also provide an opportunity for the SerDe to reject any Hive 
Schemas that it cannot support (for example - if a SerDe cannot support maps - 
it can reject DDL statements with maps in this step).

Thoughts?




> Change SerDe API to allow skipping unused columns
> -------------------------------------------------
>
>                 Key: HIVE-207
>                 URL: https://issues.apache.org/jira/browse/HIVE-207
>             Project: Hadoop Hive
>          Issue Type: Bug
>          Components: Query Processor, Serializers/Deserializers
>            Reporter: David Phillips
>
> A deserializer shouldn't have to deserialize columns that are never used by 
> the query processor.  A serializer shouldn't have to examine unused columns 
> that are known to always be null.
> As an example, we store data as a Protocol Buffer structure with ~60 fields.  
> Running a "select count(1)" currently requires deserializing all fields, 
> which includes checking if they exist and formatting the data appropriately.  
> This is expensive and unnecessary.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to