private void fallbackToMergeJoin(JoinOperator joinOp, OptimizeTezProcContext context)
      throws SemanticException {
    MapJoinConversion mapJoinConversion =
        getMapJoinConversion(
            joinOp, context, estimateNumBuckets(joinOp, false), true, Long.MAX_VALUE, false);
    final int pos;
    if (mapJoinConversion == null || mapJoinConversion.getBigTablePos() == -1) {
      LOG.info("Could not get a valid join position. Defaulting to position 0");
      pos = 0;
    } else {
      pos = mapJoinConversion.getBigTablePos();
    }
    LOG.info("Fallback to common merge join operator");
    convertJoinSMBJoin(joinOp, context, pos, 0, false);
  }
Estimate the number of buckets in the join, using the parent operators' OpTraits and/or
parent operators' number of reducers
@param joinOp
@param useOpTraits  Whether OpTraits should be used for the estimate.
@return
ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java