You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2011/03/24 15:09:50 UTC

svn commit: r1084964 - /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java

Author: namit
Date: Thu Mar 24 14:09:49 2011
New Revision: 1084964

URL: http://svn.apache.org/viewvc?rev=1084964&view=rev
Log:
HIVE-1966 mapjoin operator should not load hashtable for each new
          inputfile if the hashtable to be loaded is already there
          (Yongqiang He via namit)


Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java?rev=1084964&r1=1084963&r2=1084964&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java Thu Mar 24 14:09:49 2011
@@ -64,6 +64,7 @@ public class MapJoinOperator extends Abs
   transient int metadataKeyTag;
   transient int[] metadataValueTag;
   transient int maxMapJoinSize;
+  transient boolean hashTblInitedOnce;
   private int bigTableAlias;
 
   public MapJoinOperator() {
@@ -103,7 +104,7 @@ public class MapJoinOperator extends Abs
       rowContainerMap.put(Byte.valueOf((byte) pos), rowContainer);
     }
 
-
+    hashTblInitedOnce = false;
   }
 
   @Override
@@ -144,10 +145,17 @@ public class MapJoinOperator extends Abs
   }
 
   private void loadHashTable() throws HiveException {
+
+    if (!this.getExecContext().getLocalWork().getInputFileChangeSensitive()) {
+      if (hashTblInitedOnce) {
+        return;
+      } else {
+        hashTblInitedOnce = true;
+      }
+    }
+    
     boolean localMode = HiveConf.getVar(hconf, HiveConf.ConfVars.HADOOPJT).equals("local");
     String baseDir = null;
-    HashMapWrapper<AbstractMapJoinKey, MapJoinObjectValue> hashtable;
-    Byte pos;
 
     String currentInputFile = HiveConf.getVar(hconf, HiveConf.ConfVars.HADOOPMAPFILENAME);
     LOG.info("******* Load from HashTable File: input : " + currentInputFile);
@@ -181,8 +189,8 @@ public class MapJoinOperator extends Abs
       }
       for (Map.Entry<Byte, HashMapWrapper<AbstractMapJoinKey, MapJoinObjectValue>> entry : mapJoinTables
           .entrySet()) {
-        pos = entry.getKey();
-        hashtable = entry.getValue();
+        Byte pos = entry.getKey();
+        HashMapWrapper<AbstractMapJoinKey, MapJoinObjectValue> hashtable = entry.getValue();
         String filePath = Utilities.generatePath(baseDir, pos, currentFileName);
         Path path = new Path(filePath);
         LOG.info("\tLoad back 1 hashtable file from tmp file uri:" + path.toString());
@@ -293,7 +301,7 @@ public class MapJoinOperator extends Abs
   public void closeOp(boolean abort) throws HiveException {
 
     if (mapJoinTables != null) {
-      for (HashMapWrapper hashTable : mapJoinTables.values()) {
+      for (HashMapWrapper<?, ?> hashTable : mapJoinTables.values()) {
         hashTable.close();
       }
     }