diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java index 1ea2b65..7788d05 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java @@ -83,6 +83,7 @@ protected transient MapOpCtx current; private transient List> extraChildrenToClose = null; + private final Map normalizedPaths = new HashMap(); private static class MapInputPath { String path; @@ -467,7 +468,14 @@ public void cleanUpInputFileChangedOp() throws HiveException { } private Path normalizePath(String onefile) { - return new Path(onefile); + //creating Path is expensive, so cache the corresponding + //Path object in normalizedPaths + Path path = normalizedPaths.get(onefile); + if(path == null){ + path = new Path(onefile); + normalizedPaths.put(onefile, path); + } + return path; } public void process(Writable value) throws HiveException {