org.apache.hadoop.hive.ql.udf.generic
Class GenericUDAFEvaluator
java.lang.Object
org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator
- Direct Known Subclasses:
- GenericUDAFAverage.GenericUDAFAverageEvaluator, GenericUDAFBridge.GenericUDAFBridgeEvaluator, GenericUDAFCount.GenericUDAFCountEvaluator, GenericUDAFSum.GenericUDAFSumDouble, GenericUDAFSum.GenericUDAFSumLong, GenericUDAFVariance.GenericUDAFVarianceEvaluator
public abstract class GenericUDAFEvaluator
- extends Object
A Generic User-defined aggregation function (GenericUDAF) for the use with
Hive.
New GenericUDAF classes need to inherit from this GenericUDAF class.
The GenericUDAF are superior to normal UDAFs in the following ways:
1. It can accept arguments of complex types, and return complex types.
2. It can accept variable length of arguments.
3. It can accept an infinite number of function signature - for example,
it's easy to write a GenericUDAF that accepts array,
array> and so on (arbitrary levels of nesting).
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
GenericUDAFEvaluator
public GenericUDAFEvaluator()
- The constructor
init
public ObjectInspector init(GenericUDAFEvaluator.Mode m,
ObjectInspector[] parameters)
throws HiveException
- Initialize the evaluator.
- Parameters:
m
- The mode of aggregation.parameters
- The ObjectInspector for the parameters:
In PARTIAL1 and COMPLETE mode, the parameters are original data;
In PARTIAL2 and FINAL mode, the parameters are just partial aggregations (in that case, the array will always have a single element).
- Returns:
- The ObjectInspector for the return value.
In PARTIAL1 and PARTIAL2 mode, the ObjectInspector for the return value of terminatePartial() call;
In FINAL and COMPLETE mode, the ObjectInspector for the return value of terminate() call.
NOTE: We need ObjectInspector[] (in addition to the TypeInfo[] in GenericUDAFResolver) for 2 reasons:
1. ObjectInspector contains more information than TypeInfo;
and GenericUDAFEvaluator.init at execution time.
2. We call GenericUDAFResolver.getEvaluator at compilation time,
- Throws:
HiveException
getNewAggregationBuffer
public abstract GenericUDAFEvaluator.AggregationBuffer getNewAggregationBuffer()
throws HiveException
- Get a new aggregation object.
- Throws:
HiveException
reset
public abstract void reset(GenericUDAFEvaluator.AggregationBuffer agg)
throws HiveException
- Reset the aggregation. This is useful if we want to reuse the same aggregation.
- Throws:
HiveException
aggregate
public void aggregate(GenericUDAFEvaluator.AggregationBuffer agg,
Object[] parameters)
throws HiveException
- This function will be called by GroupByOperator when it sees a new input row.
- Parameters:
agg
- The object to store the aggregation result.parameters
- The row, can be inspected by the OIs passed in init().
- Throws:
HiveException
evaluate
public Object evaluate(GenericUDAFEvaluator.AggregationBuffer agg)
throws HiveException
- This function will be called by GroupByOperator when it sees a new input row.
- Parameters:
agg
- The object to store the aggregation result.
- Throws:
HiveException
iterate
public abstract void iterate(GenericUDAFEvaluator.AggregationBuffer agg,
Object[] parameters)
throws HiveException
- Iterate through original data.
- Parameters:
parameters
- The objects of parameters.
- Throws:
HiveException
terminatePartial
public abstract Object terminatePartial(GenericUDAFEvaluator.AggregationBuffer agg)
throws HiveException
- Get partial aggregation result.
- Returns:
- partial aggregation result.
- Throws:
HiveException
merge
public abstract void merge(GenericUDAFEvaluator.AggregationBuffer agg,
Object partial)
throws HiveException
- Merge with partial aggregation result.
NOTE: null might be passed in case there is no input data.
- Parameters:
partial
- The partial aggregation result.
- Throws:
HiveException
terminate
public abstract Object terminate(GenericUDAFEvaluator.AggregationBuffer agg)
throws HiveException
- Get final aggregation result.
- Returns:
- final aggregation result.
- Throws:
HiveException
Copyright © 2009 The Apache Software Foundation