You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Jesus Camacho Rodriguez (JIRA)" <ji...@apache.org> on 2014/11/26 20:33:12 UTC

[jira] [Created] (HIVE-8975) Possible performance regression on bucket_map_join_tez2.q

Jesus Camacho Rodriguez created HIVE-8975:
---------------------------------------------

             Summary: Possible performance regression on bucket_map_join_tez2.q
                 Key: HIVE-8975
                 URL: https://issues.apache.org/jira/browse/HIVE-8975
             Project: Hive
          Issue Type: Bug
          Components: Logical Optimizer, Statistics
    Affects Versions: 0.15.0
            Reporter: Jesus Camacho Rodriguez


After introducing the identity project removal optimization in HIVE-8435, plan in bucket_map_join_tez2.q that runs on Tez changed to be sub-optimal. In particular, earlier it was doing a map-join and after HIVE-8435 it changed to a reduce-join.

The query is the following one:
{noformat}
select a.key, b.key from (select distinct key from tab) a join tab b on b.key = a.key
{noformat}

The plan before removing the projections is:
{noformat}
TS[0]-FIL[16]-SEL[1]-GBY[2]-RS[3]-GBY[4]-SEL[5]-RS[8]-JOIN[11]-SEL[12]-FS[13]
TS[6]-FIL[17]-RS[10]-JOIN[11]
{noformat}

And after removing identity projections:
{noformat}
TS[0]-FIL[16]-GBY[2]-RS[3]-GBY[4]-RS[8]-JOIN[11]-SEL[12]-FS[13]
TS[6]-FIL[17]-RS[10]-JOIN[11]
{noformat}

After digging a bit, I realized it is not converting the reduce-join into a map-join because stats for GBY\[4\] change if SEL\[5\] is removed; thus the optimization does not kick in. 
The reason for the stats change in the GroupBy operator is in [this line|https://github.com/apache/hive/blob/6f4365e8a21e7b480bf595d079a71303a50bf1b2/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java#L633], where it is checked whether the GBY is immediately followed by a RS operator or not, and calculate stats differently depending on it.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)