diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java index 4145baf25b..f8da84e1f9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java @@ -48,6 +48,7 @@ import org.apache.hadoop.hive.ql.exec.SelectOperator; import org.apache.hadoop.hive.ql.exec.TableScanOperator; import org.apache.hadoop.hive.ql.exec.TezDummyStoreOperator; +import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.lib.NodeProcessor; import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx; @@ -727,7 +728,15 @@ private boolean checkConvertJoinBucketMapJoin(JoinOperator joinOp, List> grandParentColNames = parentOfParent.getOpTraits().getBucketColNames(); int numBuckets = parentOfParent.getOpTraits().getNumBuckets(); // all keys matched. - if (!checkColEquality(grandParentColNames, parentColNames, rs.getColumnExprMap(), true)) { + + Map reduceKeys = new HashMap(); + for (Map.Entry entry : rs.getColumnExprMap().entrySet()) { + if (entry.getKey().startsWith(Utilities.ReduceField.KEY.toString())) { + reduceKeys.put(entry.getKey(), entry.getValue()); + } + } + + if (!checkColEquality(grandParentColNames, parentColNames, reduceKeys, true)) { LOG.info("No info available to check for bucket map join. Cannot convert"); return false; } diff --git a/ql/src/test/results/clientpositive/llap/tez_smb_main.q.out b/ql/src/test/results/clientpositive/llap/tez_smb_main.q.out index 9929989f0e..1809fa77d1 100644 --- a/ql/src/test/results/clientpositive/llap/tez_smb_main.q.out +++ b/ql/src/test/results/clientpositive/llap/tez_smb_main.q.out @@ -592,7 +592,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Edges: - Map 1 <- Map 4 (CUSTOM_EDGE) + Map 1 <- Map 4 (BROADCAST_EDGE) Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE) #### A masked pattern was here #### @@ -721,7 +721,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Edges: - Map 1 <- Map 4 (CUSTOM_EDGE) + Map 1 <- Map 4 (BROADCAST_EDGE) Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE) Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE) #### A masked pattern was here #### @@ -853,7 +853,7 @@ POSTHOOK: Input: default@tab_n11@ds=2008-04-08 POSTHOOK: Input: default@tab_part_n12 POSTHOOK: Input: default@tab_part_n12@ds=2008-04-08 #### A masked pattern was here #### -9 +40 PREHOOK: query: explain select count(*) from tab_n11 a join tab_part_n12 b on a.value = b.value PREHOOK: type: QUERY POSTHOOK: query: explain select count(*) from tab_n11 a join tab_part_n12 b on a.value = b.value @@ -1426,7 +1426,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Edges: - Map 1 <- Map 2 (CUSTOM_EDGE) + Map 1 <- Map 2 (BROADCAST_EDGE) Map 3 <- Map 1 (CUSTOM_EDGE) Reducer 4 <- Map 3 (CUSTOM_SIMPLE_EDGE) #### A masked pattern was here #### @@ -1549,7 +1549,7 @@ STAGE PLANS: Tez #### A masked pattern was here #### Edges: - Map 1 <- Map 2 (CUSTOM_EDGE) + Map 1 <- Map 2 (BROADCAST_EDGE) Map 3 <- Map 1 (CUSTOM_EDGE) Reducer 4 <- Map 3 (CUSTOM_SIMPLE_EDGE) #### A masked pattern was here #### @@ -1675,7 +1675,7 @@ POSTHOOK: Input: default@tab_n11@ds=2008-04-08 POSTHOOK: Input: default@tab_part_n12 POSTHOOK: Input: default@tab_part_n12@ds=2008-04-08 #### A masked pattern was here #### -9 +40 PREHOOK: query: explain select count(*) from (select s1.key as key, s1.value as value from tab_n11 s1 join tab_n11 s3 on s1.key=s3.key UNION ALL