diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 5e0553d..dae628f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -3160,13 +3160,19 @@ public static void createTmpDirs(Configuration conf, MapWork mWork) Map> pa = mWork.getPathToAliases(); if (pa != null) { + // common case: 1 table scan per map-work + // rare case: smb joins + HashSet aliases = new HashSet(1); List> ops = - new ArrayList>(); + new ArrayList>(); for (List ls : pa.values()) { for (String a : ls) { - ops.add(mWork.getAliasToWork().get(a)); + aliases.add(a); } } + for (String a : aliases) { + ops.add(mWork.getAliasToWork().get(a)); + } createTmpDirs(conf, ops); } }