private void breakOperatorTree(Operator<? extends OperatorDesc> topOp) { if (topOp instanceof ReduceSinkOperator) { topOp.setChildOperators(null); } for (Operator<? extends OperatorDesc> op : topOp.getChildOperators()) { breakOperatorTree(op); } }
/** * Returns an operator given the conf and a list of children operators. */ public static void makeChild( Operator<? extends OperatorDesc> ret, Operator<? extends OperatorDesc>... oplist) { if (oplist.length == 0) { return; } ArrayList<Operator<? extends OperatorDesc>> clist = new ArrayList<Operator<? extends OperatorDesc>>(); for (Operator<? extends OperatorDesc> op : oplist) { clist.add(op); } ret.setChildOperators(clist); // Add this parent to the children for (Operator<? extends OperatorDesc> op : oplist) { List<Operator<? extends OperatorDesc>> parents = op.getParentOperators(); parents.add(ret); op.setParentOperators(parents); } }
public void removeChild(Operator<? extends OperatorDesc> child) { int childIndex = childOperators.indexOf(child); assert childIndex != -1; if (childOperators.size() == 1) { setChildOperators(null); } else { childOperators.remove(childIndex); } int parentIndex = child.getParentOperators().indexOf(this); assert parentIndex != -1; if (child.getParentOperators().size() == 1) { child.setParentOperators(null); } else { child.getParentOperators().remove(parentIndex); } }
public void removeParent(Operator<? extends OperatorDesc> parent) { int parentIndex = parentOperators.indexOf(parent); assert parentIndex != -1; if (parentOperators.size() == 1) { setParentOperators(null); } else { parentOperators.remove(parentIndex); } int childIndex = parent.getChildOperators().indexOf(this); assert childIndex != -1; if (parent.getChildOperators().size() == 1) { parent.setChildOperators(null); } else { parent.getChildOperators().remove(childIndex); } }
private void breakOperatorTree(Operator<? extends OperatorDesc> topOp) { if (topOp instanceof ReduceSinkOperator) { topOp.setChildOperators(null); } for (Operator<? extends OperatorDesc> op : topOp.getChildOperators()) { breakOperatorTree(op); } }
public void removeParent(Operator<? extends OperatorDesc> parent) { int parentIndex = parentOperators.indexOf(parent); assert parentIndex != -1; if (parentOperators.size() == 1) { setParentOperators(null); } else { parentOperators.remove(parentIndex); } int childIndex = parent.getChildOperators().indexOf(this); assert childIndex != -1; if (parent.getChildOperators().size() == 1) { parent.setChildOperators(null); } else { parent.getChildOperators().remove(childIndex); } }
public void removeChild(Operator<? extends OperatorDesc> child) { int childIndex = childOperators.indexOf(child); assert childIndex != -1; if (childOperators.size() == 1) { setChildOperators(null); } else { childOperators.remove(childIndex); } int parentIndex = child.getParentOperators().indexOf(this); assert parentIndex != -1; if (child.getParentOperators().size() == 1) { child.setParentOperators(null); } else { child.getParentOperators().remove(parentIndex); } }
/** * Returns an operator given the conf and a list of parent operators. */ public static <T extends OperatorDesc> Operator<T> getAndMakeChild( CompilationOpContext ctx, T conf, RowSchema rwsch, Operator[] oplist) { Operator<T> ret = get(ctx, (Class<T>) conf.getClass()); ret.setConf(conf); ret.setSchema(rwsch); if (oplist.length == 0) return ret; // Add the new operator as child of each of the passed in operators for (Operator op : oplist) { List<Operator> children = op.getChildOperators(); children.add(ret); op.setChildOperators(children); } // add parents for the newly created operator List<Operator<? extends OperatorDesc>> parent = new ArrayList<Operator<? extends OperatorDesc>>(); for (Operator op : oplist) { parent.add(op); } ret.setParentOperators(parent); return (ret); }
/** * Returns an operator given the conf and a list of parent operators. */ public static <T extends OperatorDesc> Operator<T> getAndMakeChild( T conf, Operator oplist0, Operator... oplist) { Operator<T> ret = get(oplist0.getCompilationOpContext(), (Class<T>) conf.getClass()); ret.setConf(conf); // Set the bucketing Version ret.setBucketingVersion(oplist0.getBucketingVersion()); // Add the new operator as child of each of the passed in operators List<Operator> children = oplist0.getChildOperators(); children.add(ret); oplist0.setChildOperators(children); for (Operator op : oplist) { children = op.getChildOperators(); children.add(ret); op.setChildOperators(children); } // add parents for the newly created operator List<Operator<? extends OperatorDesc>> parent = new ArrayList<Operator<? extends OperatorDesc>>(); parent.add(oplist0); for (Operator op : oplist) { parent.add(op); } ret.setParentOperators(parent); return (ret); }
public static FakeCaptureOutputOperator addCaptureOutputChild(CompilationOpContext ctx, Operator<? extends OperatorDesc> op) { FakeCaptureOutputOperator out = new FakeCaptureOutputOperator(ctx); List<Operator<? extends OperatorDesc>> listParents = new ArrayList<Operator<? extends OperatorDesc>>(1); listParents.add(op); out.setParentOperators(listParents); List<Operator<? extends OperatorDesc>> listChildren = new ArrayList<Operator<? extends OperatorDesc>>(1); listChildren.add(out); op.setChildOperators(listChildren); return out; }
public static FakeCaptureVectorToRowOutputOperator addCaptureOutputChild(CompilationOpContext ctx, Operator<? extends OperatorDesc> op) { FakeCaptureVectorToRowOutputOperator out = new FakeCaptureVectorToRowOutputOperator(ctx, op); List<Operator<? extends OperatorDesc>> listParents = new ArrayList<Operator<? extends OperatorDesc>>(1); listParents.add(op); out.setParentOperators(listParents); List<Operator<? extends OperatorDesc>> listChildren = new ArrayList<Operator<? extends OperatorDesc>>(1); listChildren.add(out); op.setChildOperators(listChildren); return out; }
/** * In bucket mapjoin, there are ReduceSinks that mark a small table parent (Reduce Sink are removed from big-table). * In SMB join these are not expected for any parents, either from small or big tables. * @param mapJoinOp */ @SuppressWarnings("unchecked") private void removeSmallTableReduceSink(MapJoinOperator mapJoinOp) { SMBJoinDesc smbJoinDesc = new SMBJoinDesc(mapJoinOp.getConf()); List<Operator<? extends OperatorDesc>> parentOperators = mapJoinOp.getParentOperators(); for (int i = 0; i < parentOperators.size(); i++) { Operator<? extends OperatorDesc> par = parentOperators.get(i); if (i != smbJoinDesc.getPosBigTable()) { if (par instanceof ReduceSinkOperator) { List<Operator<? extends OperatorDesc>> grandParents = par.getParentOperators(); Preconditions.checkArgument(grandParents.size() == 1, "AssertionError: expect # of parents to be 1, but was " + grandParents.size()); Operator<? extends OperatorDesc> grandParent = grandParents.get(0); grandParent.removeChild(par); grandParent.setChildOperators(Utilities.makeList(mapJoinOp)); mapJoinOp.getParentOperators().set(i, grandParent); } } } } }
protected static void removeOperator(Operator<?> target, Operator<?> child, Operator<?> parent, ParseContext context) { for (Operator<?> aparent : target.getParentOperators()) { aparent.replaceChild(target, child); } for (Operator<?> achild : target.getChildOperators()) { achild.replaceParent(target, parent); } target.setChildOperators(null); target.setParentOperators(null); } }
operator.setChildOperators(Arrays.<Operator<? extends OperatorDesc>>asList(sink));
operator.setChildOperators(Arrays.<Operator<? extends OperatorDesc>>asList(sink));
public boolean removeChildren(Operator<? extends OperatorDesc> currOp, int depth) { Operator<? extends OperatorDesc> inputOp = currOp; for (int i = 0; i < depth; i++) { // If there are more than 1 children at any level, don't do anything if ((currOp.getChildOperators() == null) || (currOp.getChildOperators().isEmpty()) || (currOp.getChildOperators().size() > 1)) { return false; } currOp = currOp.getChildOperators().get(0); } // add selectOp to match the schema // after that, inputOp is the parent of selOp. for (Operator<? extends OperatorDesc> op : inputOp.getChildOperators()) { op.getParentOperators().clear(); } inputOp.getChildOperators().clear(); Operator<? extends OperatorDesc> selOp = genOutputSelectForGroupBy(inputOp, currOp); // update the childOp of selectOp selOp.setChildOperators(currOp.getChildOperators()); // update the parentOp for (Operator<? extends OperatorDesc> op : currOp.getChildOperators()) { op.replaceParent(currOp, selOp); } return true; }
protected static void removeOperator(Operator<?> target, Operator<?> child, Operator<?> parent, ParseContext context) { for (Operator<?> aparent : target.getParentOperators()) { aparent.replaceChild(target, child); } for (Operator<?> achild : target.getChildOperators()) { achild.replaceParent(target, parent); } target.setChildOperators(null); target.setParentOperators(null); } }
public static void connectOperators( Operator<? extends OperatorDesc> operator, Operator<? extends OperatorDesc> childOperator) throws HiveException { List<Operator<? extends OperatorDesc>> newParentOperators = newOperatorList(); newParentOperators.addAll(childOperator.getParentOperators()); newParentOperators.add(operator); childOperator.setParentOperators(newParentOperators); List<Operator<? extends OperatorDesc>> newChildOperators = newOperatorList(); newChildOperators.addAll(operator.getChildOperators()); newChildOperators.add(childOperator); operator.setChildOperators(newChildOperators); }
private void fixupParentChildOperators(Operator<? extends OperatorDesc> op, Operator<? extends OperatorDesc> vectorOp) { if (op.getParentOperators() != null) { vectorOp.setParentOperators(op.getParentOperators()); for (Operator<? extends OperatorDesc> p : op.getParentOperators()) { p.replaceChild(op, vectorOp); } } if (op.getChildOperators() != null) { vectorOp.setChildOperators(op.getChildOperators()); for (Operator<? extends OperatorDesc> c : op.getChildOperators()) { c.replaceParent(op, vectorOp); } } }
private void fixupParentChildOperators(Operator<? extends OperatorDesc> op, Operator<? extends OperatorDesc> vectorOp) { if (op.getParentOperators() != null) { vectorOp.setParentOperators(op.getParentOperators()); for (Operator<? extends OperatorDesc> p : op.getParentOperators()) { p.replaceChild(op, vectorOp); } } if (op.getChildOperators() != null) { vectorOp.setChildOperators(op.getChildOperators()); for (Operator<? extends OperatorDesc> c : op.getChildOperators()) { c.replaceParent(op, vectorOp); } } }