public GenericUDAFEvaluator getEvaluator()

in src/main/java/org/apache/datasketches/hive/theta/DataToSketchUDAF.java [90:130]


  public GenericUDAFEvaluator getEvaluator(final GenericUDAFParameterInfo info) throws SemanticException {
    final ObjectInspector[] parameters = info.getParameterObjectInspectors();

    // Validate the correct number of parameters
    if (parameters.length < 1) {
      throw new UDFArgumentException("Please specify at least 1 argument");
    }

    if (parameters.length > 4) {
      throw new UDFArgumentException("Please specify no more than 4 arguments");
    }

    // Validate first parameter type
    ObjectInspectorValidator.validateCategoryPrimitive(parameters[0], 0);

    // Validate second argument if present
    if (parameters.length > 1) {
      ObjectInspectorValidator.validateIntegralParameter(parameters[1], 1);
      if (!ObjectInspectorUtils.isConstantObjectInspector(parameters[1])) {
        throw new UDFArgumentTypeException(1, "The second argument must be a constant");
      }
    }

    // Validate third argument if present
    if (parameters.length > 2) {
      ObjectInspectorValidator.validateFloatingPointParameter(parameters[2], 2);
      if (!ObjectInspectorUtils.isConstantObjectInspector(parameters[2])) {
        throw new UDFArgumentTypeException(2, "The third argument must be a constant");
      }
    }

    // Validate fourth argument if present
    if (parameters.length > 3) {
      ObjectInspectorValidator.validateIntegralParameter(parameters[3], 3);
      if (!ObjectInspectorUtils.isConstantObjectInspector(parameters[3])) {
        throw new UDFArgumentTypeException(3, "The fourth argument must be a constant");
      }
    }

    return new DataToSketchEvaluator();
  }