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

Ashutosh Chauhan commented on HIVE-5279:
----------------------------------------

I think this can be fixed by making following changes in AggregationDesc class: 
1. Mark genericUDAFEvaluator as transient.
2. Store the class name of GenericUDAFEvaluator as string.
3. In getGenericUDAFEvaluator(), using reflection on className string, 
instantiate GenericUDAFEvaluator and return it.

Since none of the callers of getGenericUDAFEvaluator make any use of state of 
genericUDAFEvaluator, this should work. Can you give it a try? 
                
> Kryo cannot instantiate GenericUDAFEvaluator in GroupByDesc
> -----------------------------------------------------------
>
>                 Key: HIVE-5279
>                 URL: https://issues.apache.org/jira/browse/HIVE-5279
>             Project: Hive
>          Issue Type: Bug
>          Components: Query Processor
>            Reporter: Navis
>            Priority: Critical
>
> We didn't forced GenericUDAFEvaluator to be Serializable. I don't know how 
> previous serialization mechanism solved this but, kryo complaints that it's 
> not Serializable and fails the query.
> The log below is the example, 
> {noformat}
> java.lang.RuntimeException: com.esotericsoftware.kryo.KryoException: Class 
> cannot be created (missing no-arg constructor): 
> org.apache.hadoop.hive.serde2.objectinspector.StandardListObjectInspector
> Serialization trace:
> inputOI 
> (org.apache.hadoop.hive.ql.udf.generic.GenericUDAFGroupOn$VersionedFloatGroupOnEval)
> genericUDAFEvaluator (org.apache.hadoop.hive.ql.plan.AggregationDesc)
> aggregators (org.apache.hadoop.hive.ql.plan.GroupByDesc)
> conf (org.apache.hadoop.hive.ql.exec.GroupByOperator)
> childOperators (org.apache.hadoop.hive.ql.exec.SelectOperator)
> childOperators (org.apache.hadoop.hive.ql.exec.TableScanOperator)
> aliasToWork (org.apache.hadoop.hive.ql.plan.MapWork)
>       at 
> org.apache.hadoop.hive.ql.exec.Utilities.getBaseWork(Utilities.java:312)
>       at 
> org.apache.hadoop.hive.ql.exec.Utilities.getMapWork(Utilities.java:261)
>       at 
> org.apache.hadoop.hive.ql.io.HiveInputFormat.init(HiveInputFormat.java:256)
>       at 
> org.apache.hadoop.hive.ql.io.HiveInputFormat.pushProjectionsAndFilters(HiveInputFormat.java:383)
>       at org.apache.h
> {noformat}
> If this cannot be fixed in somehow, some UDAFs should be modified to be run 
> on hive-0.13.0

--
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