private AppMasterEventOperator findDynamicPartitionBroadcast(Operator<?> parent) {

    for (Operator<?> op : parent.getChildOperators()) {
      while (op != null) {
        if (op instanceof AppMasterEventOperator && op.getConf() instanceof DynamicPruningEventDesc) {
          // found dynamic partition pruning operator
          return (AppMasterEventOperator)op;
        }
        if (op instanceof ReduceSinkOperator || op instanceof FileSinkOperator) {
          // crossing reduce sink or file sink means the pruning isn't for this parent.
          break;
        }

        if (op.getChildOperators().size() != 1) {
          // dynamic partition pruning pipeline doesn't have multiple children
          break;
        }

        op = op.getChildOperators().get(0);
      }
    }

    return null;
  }
Obtain big table position for join.

@param joinOp join operator
@param context optimization context
@param buckets bucket count for Bucket Map Join conversion consideration or reduce count
for Dynamic Hash Join conversion consideration
@param skipJoinTypeChecks whether to skip join type checking
@param maxSize size threshold for Map Join conversion
@param checkMapJoinThresholds whether to check thresholds to convert to Map Join
@return returns big table position or -1 if it cannot be determined
@throws SemanticException
ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java