public GenericUDAFEvaluator getGenericWindowingEvaluator(String functionName, List<ObjectInspector> argumentOIs, boolean isDistinct, boolean isAllColumns) throws SemanticException { functionName = functionName.toLowerCase(); WindowFunctionInfo info = getWindowFunctionInfo(functionName); if (info == null) { return null; } if (!functionName.equals(FunctionRegistry.LEAD_FUNC_NAME) && !functionName.equals(FunctionRegistry.LAG_FUNC_NAME)) { return getGenericUDAFEvaluator(functionName, argumentOIs, true, isDistinct, isAllColumns); } // this must be lead/lag UDAF ObjectInspector args[] = new ObjectInspector[argumentOIs.size()]; GenericUDAFResolver udafResolver = info.getGenericUDAFResolver(); GenericUDAFParameterInfo paramInfo = new SimpleGenericUDAFParameterInfo( argumentOIs.toArray(args), true, isDistinct, isAllColumns); return ((GenericUDAFResolver2) udafResolver).getEvaluator(paramInfo); }
public GenericUDAFEvaluator getGenericWindowingEvaluator(String functionName, List<ObjectInspector> argumentOIs, boolean isDistinct, boolean isAllColumns) throws SemanticException { functionName = functionName.toLowerCase(); WindowFunctionInfo info = getWindowFunctionInfo(functionName); if (info == null) { return null; } if (!functionName.equals(FunctionRegistry.LEAD_FUNC_NAME) && !functionName.equals(FunctionRegistry.LAG_FUNC_NAME)) { return getGenericUDAFEvaluator(functionName, argumentOIs, true, isDistinct, isAllColumns); } // this must be lead/lag UDAF ObjectInspector args[] = new ObjectInspector[argumentOIs.size()]; GenericUDAFResolver udafResolver = info.getGenericUDAFResolver(); GenericUDAFParameterInfo paramInfo = new SimpleGenericUDAFParameterInfo( argumentOIs.toArray(args), true, isDistinct, isAllColumns); return ((GenericUDAFResolver2) udafResolver).getEvaluator(paramInfo); }
new SimpleGenericUDAFParameterInfo( args, isWindowing, isDistinct, isAllColumns); if (udafResolver instanceof GenericUDAFResolver2) {
new SimpleGenericUDAFParameterInfo( args, false, isDistinct, isAllColumns);
new SimpleGenericUDAFParameterInfo( args, false, isDistinct, isAllColumns);
new SimpleGenericUDAFParameterInfo( args, isWindowing, isDistinct, isAllColumns); if (udafResolver instanceof GenericUDAFResolver2) {
private void validateUDAF(Double expectedResult, GenericUDAFResolver2 udaf) throws Exception { ObjectInspector[] params = new ObjectInspector[] { javaDoubleObjectInspector, javaDoubleObjectInspector }; GenericUDAFParameterInfo gpi = new SimpleGenericUDAFParameterInfo(params, false, false, false); GenericUDAFExecutor executor = new GenericUDAFExecutor(udaf, gpi); List<Object> values = executor.run(rowSet); if (expectedResult == null) { for (Object v : values) { assertNull(v); } } else { for (Object v : values) { if (v instanceof DoubleWritable) { assertEquals(expectedResult, ((DoubleWritable) v).get(), 1e-10); } else { assertEquals(expectedResult, ((LongWritable) v).get(), 1e-10); } } } }
private SimpleGenericUDAFParameterInfo getLazyVoidOneParam() { ObjectInspector[] objectInspectors = new ObjectInspector[1]; objectInspectors[0] = PrimitiveObjectInspectorFactory.getPrimitiveJavaObjectInspector( PrimitiveObjectInspector.PrimitiveCategory.LONG); return new SimpleGenericUDAFParameterInfo( objectInspectors, false, false, false); }
public GenericUDAFEvaluator getGenericWindowingEvaluator(String functionName, List<ObjectInspector> argumentOIs, boolean isDistinct, boolean isAllColumns) throws SemanticException { functionName = functionName.toLowerCase(); WindowFunctionInfo info = getWindowFunctionInfo(functionName); if (info == null) { return null; } if (!functionName.equals(FunctionRegistry.LEAD_FUNC_NAME) && !functionName.equals(FunctionRegistry.LAG_FUNC_NAME)) { return getGenericUDAFEvaluator(functionName, argumentOIs, isDistinct, isAllColumns); } // this must be lead/lag UDAF ObjectInspector args[] = new ObjectInspector[argumentOIs.size()]; GenericUDAFResolver udafResolver = info.getGenericUDAFResolver(); GenericUDAFParameterInfo paramInfo = new SimpleGenericUDAFParameterInfo( argumentOIs.toArray(args), isDistinct, isAllColumns); return ((GenericUDAFResolver2) udafResolver).getEvaluator(paramInfo); }
private static GenericUDAFEvaluator getEvaluator(TypeInfo inputTypeInfo, GenericUDAFResolver udaf, ConstantObjectInspectInfo constantsInfo) throws IOException { try { GenericUDAFEvaluator evaluator; ObjectInspector[] arguments = getInputObjectInspectorAsArray(inputTypeInfo, constantsInfo); if (udaf instanceof GenericUDAFResolver2) { GenericUDAFParameterInfo paramInfo = new SimpleGenericUDAFParameterInfo( arguments, false, false); evaluator = ((GenericUDAFResolver2)udaf).getEvaluator(paramInfo); } else { TypeInfo[] params = ((StructTypeInfo)inputTypeInfo) .getAllStructFieldTypeInfos().toArray(new TypeInfo[0]); evaluator = udaf.getEvaluator(params); } return evaluator; } catch (Exception e) { throw new IOException(e); } }
if (udafResolver instanceof GenericUDAFResolver2) { GenericUDAFParameterInfo paramInfo = new SimpleGenericUDAFParameterInfo( parameters, isDistinct, isAllColumns); udafEvaluator =
new SimpleGenericUDAFParameterInfo( args, isDistinct, isAllColumns); if (udafResolver instanceof GenericUDAFResolver2) {
new SimpleGenericUDAFParameterInfo( args, isDistinct, isAllColumns);
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 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; }
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; }