diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CrossProductCheck.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CrossProductCheck.java index f5abaf1cb1..4b35bb6d4f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CrossProductCheck.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CrossProductCheck.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.Map; import java.util.Stack; +import java.util.TreeMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -180,8 +181,7 @@ private void checkTezReducer(TezWork tzWrk) throws SemanticException { ReduceWork rWork = (ReduceWork) wrk; Operator reducer = ((ReduceWork)wrk).getReducer(); if ( reducer instanceof JoinOperator || reducer instanceof CommonMergeJoinOperator ) { - Map rsInfo = - new HashMap(); + Map rsInfo = new TreeMap(); for(Map.Entry e : rWork.getTagToInput().entrySet()) { rsInfo.putAll(getReducerInfo(tzWrk, rWork.getName(), e.getValue())); } diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SparkCrossProductCheck.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SparkCrossProductCheck.java index f9044511ac..7f3b1b3626 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SparkCrossProductCheck.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SparkCrossProductCheck.java @@ -36,11 +36,11 @@ import java.io.Serializable; import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Stack; +import java.util.TreeMap; /** * Check each MapJoin and ShuffleJoin Operator to see if they are performing a cross product. @@ -92,8 +92,7 @@ private void checkShuffleJoin(SparkWork sparkWork) throws SemanticException { for (ReduceWork reduceWork : sparkWork.getAllReduceWork()) { Operator reducer = reduceWork.getReducer(); if (reducer instanceof JoinOperator || reducer instanceof CommonMergeJoinOperator) { - Map rsInfo = - new HashMap(); + Map rsInfo = new TreeMap(); for (BaseWork parent : sparkWork.getParents(reduceWork)) { rsInfo.putAll(new CrossProductCheck.ExtractReduceSinkInfo(null).analyze(parent)); } diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/TezWork.java ql/src/java/org/apache/hadoop/hive/ql/plan/TezWork.java index a037ea37ed..18ff13b806 100644 --- ql/src/java/org/apache/hadoop/hive/ql/plan/TezWork.java +++ ql/src/java/org/apache/hadoop/hive/ql/plan/TezWork.java @@ -19,12 +19,12 @@ package org.apache.hadoop.hive.ql.plan; import java.io.Serializable; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -74,8 +74,8 @@ public static boolean isCustomInputType(VertexType vertex) { private static final AtomicInteger counter = new AtomicInteger(1); private final String dagId; private final String queryName; - private final Set roots = new HashSet(); - private final Set leaves = new HashSet(); + private final Set roots = new LinkedHashSet(); + private final Set leaves = new LinkedHashSet(); private final Map> workGraph = new HashMap>(); private final Map> invertedWorkGraph = new HashMap>(); private final Map, TezEdgeProperty> edgeProperties =