org.apache.hadoop.hive.ql.exec.UDAF Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.hive.ql.exec;
/**
* Please see the deprecation notice
*
* Base class for all User-defined Aggregation Function (UDAF) classes.
*
* Requirements for a UDAF class:
*
* - Implement the {@code init()} method, which resets the status of the aggregation function.
* - Implement a single method called {@code aggregate} that returns {@code boolean}.
* The method should always return {@code true} on valid inputs, or the framework will throw an Exception.
* Following are some examples:
*
* - {@code public boolean aggregate(double a);}
* - {@code public boolean aggregate(int b);}
* - {@code public boolean aggregate(double c, double d);}
*
*
* - Implement a single method called {@code evaluate} that returns the FINAL aggregation result.
* {@code evaluate} should never return {@code null} or an Exception will be thrown.
* Following are some examples:
*
* - {@code public int evaluate();}
* - {@code public long evaluate();}
* - {@code public double evaluate();}
* - {@code public Double evaluate();}
* - {@code public String evaluate();}
*
*
*
*
* Optional for a UDAF class (by implementing these two methods, the user declares
* that the UDAF supports partial aggregations):
*
* - Implement a single method called {@code evaluatePartial} that returns the PARTIAL aggregation result.
* {@code evaluatePartial} should never return {@code null} or an Exception will be thrown.
* - Implement a single method called {@code aggregatePartial} that takes a PARTIAL
* aggregation result and returns a boolean. The method should always return
* {@code true} on valid inputs, or the framework will throw an Exception.
*
*
* Following are some examples:
*
* - public int evaluatePartial();
* - public boolean aggregatePartial(int partial);
* - public String evaluatePartial();
* - public boolean aggregatePartial(String partial);
*
*
*
* @deprecated Either implement {@link org.apache.hadoop.hive.ql.udf.generic.GenericUDAFResolver2} or extend
* {@link org.apache.hadoop.hive.ql.udf.generic.AbstractGenericUDAFResolver} instead.
*/
@Deprecated
public class UDAF {
/**
* The resolver used for method resolution.
*/
UDAFEvaluatorResolver rslv;
/**
* The default constructor.
*/
public UDAF() {
rslv = new DefaultUDAFEvaluatorResolver(this.getClass());
}
/**
* The constructor with a particular type of resolver.
*/
public UDAF(UDAFEvaluatorResolver rslv) {
this.rslv = rslv;
}
/**
* Sets the resolver.
*
* @param rslv
* The method resolver to use for method resolution.
*/
public void setResolver(UDAFEvaluatorResolver rslv) {
this.rslv = rslv;
}
/**
* Gets the resolver.
*/
public UDAFEvaluatorResolver getResolver() {
return rslv;
}
}