diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedWorkOptimizer.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedWorkOptimizer.java index b206ace..01d4f57 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedWorkOptimizer.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedWorkOptimizer.java @@ -33,6 +33,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.TreeMap; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.hive.ql.exec.AppMasterEventOperator; @@ -362,7 +363,9 @@ private static void gatherDPPTableScanOps( private static Multimap splitTableScanOpsByTable( ParseContext pctx) { Multimap tableNameToOps = ArrayListMultimap.create(); - for (Entry e : pctx.getTopOps().entrySet()) { + // Sort by operator ID so we get deterministic results + Map sortedTopOps = new TreeMap<>(pctx.getTopOps()); + for (Entry e : sortedTopOps.entrySet()) { TableScanOperator tsOp = e.getValue(); tableNameToOps.put( tsOp.getConf().getTableMetadata().getDbName() + "."