public void reset(AnalysisEvaluatorBuffer analysisEvaBuffer) { RankAgg agg = (RankAgg) analysisEvaBuffer; agg.lastobj = null; agg.rowid = -1; agg.rank = 0; agg.firstrow = true; }
public Object terminate( AnalysisEvaluatorBuffer analysisEvaBuffer, ExprNodeEvaluator[] analysisParameterFields, AnalysisBuffer<Object> analysisBuffer, int currrowid, boolean absolute, BooleanTrans canternimate) { canternimate.set(true); RankAgg agg = (RankAgg) analysisEvaBuffer; if (agg.rowid == currrowid) { result.set(agg.rank); return result; } agg.rowid = currrowid; Object row = analysisBuffer.getByRowid(currrowid); ArrayList<Object> rowfull = ((ArrayList<Object>) row); row = rowfull.get(0); if (agg.firstrow) { agg.firstrow = false; agg.lastobj = new Object[analysisParameterFields.length]; try { for (int i = 0; i < agg.lastobj.length; i++) { agg.lastobj[i] = analysisParameterFields[i].evaluate(row); } } catch (HiveException e) { e.printStackTrace(); } agg.rank = agg.rowid + 1; } else { try { boolean newobj = false; Object[] objs = new Object[analysisParameterFields.length]; for (int i = 0; i < objs.length; i++) { Object obj = analysisParameterFields[i].evaluate(row); if (ObjectInspectorUtils.compare(agg.lastobj[i], inputOI[i], obj, inputOI[i]) != 0) { newobj = true; } objs[i] = obj; } if (newobj) { agg.lastobj = objs; agg.rank = agg.rowid + 1; } } catch (HiveException e) { e.printStackTrace(); } } result.set(agg.rank); return result; }