private GenericUDAFEvaluator getPartial1Evaluator() throws HiveException { if (partial1EvaluatorByVoid) { partial1Evaluator = null; } if (null == partial1Evaluator) { if (null == inputInspectors) { SimpleGenericUDAFParameterInfo paramInfo = getLazyVoidOneParam(); partial1Evaluator = resolver.getEvaluator(paramInfo); inputInspectors = paramInfo.getParameterObjectInspectors(); partial1EvaluatorByVoid = true; } else { SimpleGenericUDAFParameterInfo paramInfo = new SimpleGenericUDAFParameterInfo( inputInspectors, false, false, false); partial1Evaluator = resolver.getEvaluator(paramInfo); partial1EvaluatorByVoid = false; } partialResultInspector = partial1Evaluator.init( GenericUDAFEvaluator.Mode.PARTIAL1, inputInspectors); } return this.partial1Evaluator; }
private GenericUDAFEvaluator getFinalEvaluator() throws HiveException { if (finalEvaluatorByVoid) { // If it is not from the real finalEvaluator finalEvaluator = null; } if (null == finalEvaluator) { // If real params are null, use the one Void params. if (null == inputInspectors) { SimpleGenericUDAFParameterInfo paramInfo = getLazyVoidOneParam(); finalEvaluator = resolver.getEvaluator(paramInfo); inputInspectors = paramInfo.getParameterObjectInspectors(); finalEvaluatorByVoid = true; } else { SimpleGenericUDAFParameterInfo paramInfo = new SimpleGenericUDAFParameterInfo( inputInspectors, false, false, false); finalEvaluator = resolver.getEvaluator(paramInfo); finalEvaluatorByVoid = false; } returnInspector = finalEvaluator.init( GenericUDAFEvaluator.Mode.FINAL, inputInspectors); } return this.finalEvaluator; }
private GenericUDAFEvaluator getPartial2Evaluator() throws HiveException { if (partial2EvaluatorByVoid) { partial2Evaluator = null; } if (null == partial2Evaluator) { if (null == partialResultInspector) { SimpleGenericUDAFParameterInfo parameterInfo = getLazyVoidOneParam(); partial2Evaluator = resolver.getEvaluator(parameterInfo); partialResultInspector = parameterInfo.getParameterObjectInspectors()[0]; partial2EvaluatorByVoid = true; } else { SimpleGenericUDAFParameterInfo paramInfo = new SimpleGenericUDAFParameterInfo( inputInspectors, false, false, false); partial2Evaluator = resolver.getEvaluator(paramInfo); partial2EvaluatorByVoid = false; } // The input of Partial 2 is th Output of the Partial 1. ObjectInspector[] partial1Types = new ObjectInspector[1]; partial1Types[0] = partialResultInspector; partial2Evaluator.init( GenericUDAFEvaluator.Mode.PARTIAL2, partial1Types); } return this.partial2Evaluator; }