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 32c2fb0..f4dc779 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -3314,7 +3314,19 @@ public static boolean isVectorMode(Configuration conf) { return false; } - public static void clearWorkMap() { + public static void clearWorkMapForConf(Configuration conf) { + // Remove cached query plans for the current query only + Path mapPath = getPlanPath(conf, MAP_PLAN_NAME); + Path reducePath = getPlanPath(conf, REDUCE_PLAN_NAME); + if (mapPath != null) { + gWorkMap.remove(mapPath); + } + if (reducePath != null) { + gWorkMap.remove(reducePath); + } + } + + public static void clearWorkMap() { gWorkMap.clear(); } diff --git ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java index 7ba58b9..61cc874 100755 --- ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java @@ -393,7 +393,7 @@ private void addSplitsForGroup(List dirs, TableScanOperator tableScan, Job currentTable, result); } - Utilities.clearWorkMap(); + Utilities.clearWorkMapForConf(job); LOG.info("number of splits " + result.size()); perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.GET_SPLITS); return result.toArray(new HiveInputSplit[result.size()]);