Author: gunther
Date: Fri Dec 20 02:56:24 2013
New Revision: 1552482

URL: http://svn.apache.org/r1552482
Log:
HIVE-6078: Choosing conditional task for merging files is not deterministic in 
tez (Vikram Dixit K via Gunther Hagleitner)

Modified:
    
hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java

Modified: 
hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
URL: 
http://svn.apache.org/viewvc/hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java?rev=1552482&r1=1552481&r2=1552482&view=diff
==============================================================================
--- 
hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
 (original)
+++ 
hive/branches/tez/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
 Fri Dec 20 02:56:24 2013
@@ -1628,15 +1628,21 @@ public final class GenMapRedUtils {
           // There are separate configuration parameters to control whether to
           // merge for a map-only job
           // or for a map-reduce job
-          ReduceWork reduceWork = currTask.getWork() instanceof MapredWork
-              ? ((MapredWork) currTask.getWork()).getReduceWork() : null;
-          boolean mergeMapOnly =
-              hconf.getBoolVar(ConfVars.HIVEMERGEMAPFILES) && reduceWork == 
null;
-          boolean mergeMapRed =
-              hconf.getBoolVar(ConfVars.HIVEMERGEMAPREDFILES) &&
-              reduceWork != null;
-          if (mergeMapOnly || mergeMapRed) {
-            return true;
+          if (currTask.getWork() instanceof TezWork) {
+            return hconf.getBoolVar(ConfVars.HIVEMERGEMAPFILES) || 
+                hconf.getBoolVar(ConfVars.HIVEMERGEMAPREDFILES);
+          } else if (currTask.getWork() instanceof MapredWork) {
+            ReduceWork reduceWork = ((MapredWork) 
currTask.getWork()).getReduceWork();
+            boolean mergeMapOnly =
+                hconf.getBoolVar(ConfVars.HIVEMERGEMAPFILES) && reduceWork == 
null;
+            boolean mergeMapRed =
+                hconf.getBoolVar(ConfVars.HIVEMERGEMAPREDFILES) &&
+                reduceWork != null;
+            if (mergeMapOnly || mergeMapRed) {
+              return true;
+            }
+          } else {
+            return false;
           }
         }
       }


Reply via email to