Package org.apache.hadoop.hive.ql.plan.ptf

Examples of org.apache.hadoop.hive.ql.plan.ptf.WindowFrameDef


          initialize(arg, inpShape);
        }

      }
      if (wFnDef.getWindowFrame() != null) {
        WindowFrameDef wFrmDef = wFnDef.getWindowFrame();
        initialize(wFrmDef.getStart(), inpShape);
        initialize(wFrmDef.getEnd(), inpShape);
      }
      setupWdwFnEvaluator(wFnDef);
    }
    ArrayList<String> aliases = new ArrayList<String>();
    ArrayList<ObjectInspector> fieldOIs = new ArrayList<ObjectInspector>();
View Full Code Here


      outP.append(oRow);
    }
  }

  private boolean processWindow(WindowFunctionDef wFn) {
    WindowFrameDef frame = wFn.getWindowFrame();
    if ( frame == null ) {
      return false;
    }
    if ( frame.getStart().getAmt() == BoundarySpec.UNBOUNDED_AMOUNT &&
        frame.getEnd().getAmt() == BoundarySpec.UNBOUNDED_AMOUNT ) {
      return false;
    }
    return true;
  }
View Full Code Here

    WindowSpec wdwSpec = spec.getWindowSpec();
    if (wdwSpec != null) {
      String desc = spec.toString();

      WindowFrameDef wdwFrame = translate(spec.getName(), inpShape, wdwSpec);
      if (!wFnInfo.isSupportsWindow())
      {
        BoundarySpec start = wdwSpec.getWindowFrame().getStart();
        if (start.getAmt() != BoundarySpec.UNBOUNDED_AMOUNT) {
          throw new SemanticException(
View Full Code Here

    if (cmp > 0) {
      throw new SemanticException(String.format(
          "Window range invalid, start boundary is greater than end boundary: %s", spec));
    }

    WindowFrameDef wfDef = new WindowFrameDef();
    wfDef.setStart(translate(inpShape, s));
    wfDef.setEnd(translate(inpShape, e));
    return wfDef;
  }
View Full Code Here

        if ( (wFnDef.getWFnEval() instanceof GenericUDAFRankEvaluator) ||
            (wFnDef.getWFnEval() instanceof GenericUDAFDenseRankEvaluator ||
            (wFnDef.getWFnEval() instanceof GenericUDAFLeadEvaluator ) ) {
          continue;
        }
        WindowFrameDef wdwFrame = wFnDef.getWindowFrame();
        BoundaryDef end = wdwFrame.getEnd();
        if ( end instanceof ValueBoundaryDef ) {
          return false;
        }
        if ( end.getDirection() == Direction.FOLLOWING ) {
          return false;
View Full Code Here

    out = ObjectInspectorUtils.copyToStandardObject(out, wFn.getOI());
    return out;
  }

  private boolean processWindow(WindowFunctionDef wFn) {
    WindowFrameDef frame = wFn.getWindowFrame();
    if ( frame == null ) {
      return false;
    }
    if ( frame.getStart().getAmt() == BoundarySpec.UNBOUNDED_AMOUNT &&
        frame.getEnd().getAmt() == BoundarySpec.UNBOUNDED_AMOUNT ) {
      return false;
    }
    return true;
  }
View Full Code Here

    }
    return true;
  }

  private boolean streamingPossible(Configuration cfg, WindowFunctionDef wFnDef) {
    WindowFrameDef wdwFrame = wFnDef.getWindowFrame();
    WindowFunctionInfo wFnInfo = FunctionRegistry.getWindowFunctionInfo(wFnDef
        .getName());

    if (!wFnInfo.isSupportsWindow()) {
      return true;
    }

    BoundaryDef start = wdwFrame.getStart();
    BoundaryDef end = wdwFrame.getEnd();

    /*
     * Currently we are not handling dynamic sized windows implied by range
     * based windows.
     */
 
View Full Code Here

    int precedingSpan = 0;
    int followingSpan = 0;

    for (int i = 0; i < tabDef.getWindowFunctions().size(); i++) {
      WindowFunctionDef wFnDef = tabDef.getWindowFunctions().get(i);
      WindowFrameDef wdwFrame = wFnDef.getWindowFrame();
      GenericUDAFEvaluator fnEval = wFnDef.getWFnEval();
      boolean streamingPossible = streamingPossible(cfg, wFnDef);
      GenericUDAFEvaluator streamingEval = streamingPossible ? fnEval
          .getWindowingEvaluator(wdwFrame) : null;
      if (streamingEval != null
          && streamingEval instanceof ISupportStreamingModeForWindowing) {
        continue;
      }
      BoundaryDef start = wdwFrame.getStart();
      BoundaryDef end = wdwFrame.getEnd();
      if (!(end instanceof ValueBoundaryDef)
          && !(start instanceof ValueBoundaryDef)) {
        if (end.getAmt() != BoundarySpec.UNBOUNDED_AMOUNT
            && start.getAmt() != BoundarySpec.UNBOUNDED_AMOUNT
            && end.getDirection() != Direction.PRECEDING
            && start.getDirection() != Direction.FOLLOWING) {

          int amt = wdwFrame.getStart().getAmt();
          if (amt > precedingSpan) {
            precedingSpan = amt;
          }

          amt = wdwFrame.getEnd().getAmt();
          if (amt > followingSpan) {
            followingSpan = amt;
          }
          continue;
        }
View Full Code Here

    WindowTableFunctionDef tabDef = (WindowTableFunctionDef) getTableDef();

    for (int i = 0; i < tabDef.getWindowFunctions().size(); i++) {
      WindowFunctionDef wFnDef = tabDef.getWindowFunctions().get(i);
      WindowFrameDef wdwFrame = wFnDef.getWindowFrame();
      GenericUDAFEvaluator fnEval = wFnDef.getWFnEval();
      GenericUDAFEvaluator streamingEval = fnEval
          .getWindowingEvaluator(wdwFrame);
      if (streamingEval != null) {
        wFnDef.setWFnEval(streamingEval);
View Full Code Here

import org.junit.Test;

public class TestStreamingSum {

  public static WindowFrameDef wdwFrame(int p, int f) {
    WindowFrameDef wFrmDef = new WindowFrameDef();
    BoundaryDef start, end;
    if (p == 0) {
      start = new CurrentRowDef();
    } else {
      RangeBoundaryDef startR = new RangeBoundaryDef();
      startR.setDirection(Direction.PRECEDING);
      startR.setAmt(p);
      start = startR;
    }

    if (f == 0) {
      end = new CurrentRowDef();
    } else {
      RangeBoundaryDef endR = new RangeBoundaryDef();
      endR.setDirection(Direction.FOLLOWING);
      endR.setAmt(f);
      end = endR;
    }
    wFrmDef.setStart(start);
    wFrmDef.setEnd(end);
    return wFrmDef;
  }
View Full Code Here

TOP

Related Classes of org.apache.hadoop.hive.ql.plan.ptf.WindowFrameDef

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.