You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by kh...@apache.org on 2014/05/09 01:40:01 UTC
svn commit: r1593463 -
/hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
Author: khorgath
Date: Thu May 8 23:40:01 2014
New Revision: 1593463
URL: http://svn.apache.org/r1593463
Log:
HIVE-6828: Hive tez bucket map join conversion interferes with map join conversion (Vikram Dixit K via Gunther Hagleitner)
Modified:
hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
Modified: hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java?rev=1593463&r1=1593462&r2=1593463&view=diff
==============================================================================
--- hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java (original)
+++ hive/branches/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java Thu May 8 23:40:01 2014
@@ -80,25 +80,34 @@ public class ConvertJoinMapJoin implemen
// reducers from the parent operators.
int numBuckets = -1;
int estimatedBuckets = -1;
- for (Operator<? extends OperatorDesc>parentOp : joinOp.getParentOperators()) {
- if (parentOp.getOpTraits().getNumBuckets() > 0) {
- numBuckets = (numBuckets < parentOp.getOpTraits().getNumBuckets()) ?
- parentOp.getOpTraits().getNumBuckets() : numBuckets;
+ if (context.conf.getBoolVar(HiveConf.ConfVars.HIVE_CONVERT_JOIN_BUCKET_MAPJOIN_TEZ)) {
+ for (Operator<? extends OperatorDesc>parentOp : joinOp.getParentOperators()) {
+ if (parentOp.getOpTraits().getNumBuckets() > 0) {
+ numBuckets = (numBuckets < parentOp.getOpTraits().getNumBuckets()) ?
+ parentOp.getOpTraits().getNumBuckets() : numBuckets;
+ }
+
+ if (parentOp instanceof ReduceSinkOperator) {
+ ReduceSinkOperator rs = (ReduceSinkOperator)parentOp;
+ estimatedBuckets = (estimatedBuckets < rs.getConf().getNumReducers()) ?
+ rs.getConf().getNumReducers() : estimatedBuckets;
+ }
}
- ReduceSinkOperator rs = (ReduceSinkOperator)parentOp;
- estimatedBuckets = (estimatedBuckets < rs.getConf().getNumReducers()) ?
- rs.getConf().getNumReducers() : estimatedBuckets;
- }
- if (numBuckets <= 0) {
- numBuckets = estimatedBuckets;
if (numBuckets <= 0) {
- numBuckets = 1;
+ numBuckets = estimatedBuckets;
+ if (numBuckets <= 0) {
+ numBuckets = 1;
+ }
}
+ } else {
+ numBuckets = 1;
}
LOG.info("Estimated number of buckets " + numBuckets);
int mapJoinConversionPos = mapJoinConversionPos(joinOp, context, numBuckets);
if (mapJoinConversionPos < 0) {
+ // we cannot convert to bucket map join, we cannot convert to
+ // map join either based on the size
return null;
}
@@ -109,6 +118,12 @@ public class ConvertJoinMapJoin implemen
}
LOG.info("Convert to non-bucketed map join");
+ // check if we can convert to map join no bucket scaling.
+ mapJoinConversionPos = mapJoinConversionPos(joinOp, context, 1);
+ if (mapJoinConversionPos < 0) {
+ return null;
+ }
+
MapJoinOperator mapJoinOp = convertJoinMapJoin(joinOp, context, mapJoinConversionPos);
// map join operator by default has no bucket cols
mapJoinOp.setOpTraits(new OpTraits(null, -1));