@Override
    public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx,
                          Object... nodeOutputs) throws SemanticException {
      AppMasterEventOperator event = (AppMasterEventOperator) nd;
      if (!(event.getConf() instanceof DynamicPruningEventDesc)) {
        return null;
      }

      SemiJoinRemovalContext rCtx = (SemiJoinRemovalContext) procCtx;

      DynamicPruningEventDesc desc = (DynamicPruningEventDesc) event.getConf();
      TableScanOperator targetTSOp = desc.getTableScan();
      String targetColumnName = desc.getTargetColumnName();

      // Look for event ops above the current event op branch
      Operator<?> op = event.getParentOperators().get(0);
      while (op.getChildOperators().size() < 2) {
        op = op.getParentOperators().get(0);
      }
      Set<AppMasterEventOperator> eventOps = OperatorUtils.findOperators(
          op, AppMasterEventOperator.class);
      for (AppMasterEventOperator otherEvent : eventOps) {
        if (!(otherEvent.getConf() instanceof DynamicPruningEventDesc)) {
          continue;
        }
        DynamicPruningEventDesc otherDesc = (DynamicPruningEventDesc) otherEvent.getConf();
        if (otherEvent != event && otherDesc.getTableScan() == targetTSOp &&
            otherDesc.getTargetColumnName().equals(targetColumnName)) {
          if (rCtx.opsToRemove.containsKey(otherEvent)) {
            // We found siblings, since we are removing the other operator, no need to remove this one
            continue;
          }
          rCtx.opsToRemove.put(event, targetTSOp);
          break;
        }
      }

      return null;
    }
TezCompiler translates the operator plan into TezTasks.
ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java