All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.hadoop.hive.ql.exec.UDAF Maven / Gradle / Ivy

There is a newer version: 4.0.1
Show newest version
/**
 * 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: *

    *
  1. Implement the {@code init()} method, which resets the status of the aggregation function.
  2. *
  3. 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);}
    • *
    *
  4. *
  5. 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();}
    • *
    *
  6. *
* * Optional for a UDAF class (by implementing these two methods, the user declares * that the UDAF supports partial aggregations): *
    *
  1. 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.
  2. *
  3. 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.
  4. *
*

* 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; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy