[ 
https://issues.apache.org/jira/browse/HIVE-3652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13490521#comment-13490521
 ] 

Amareshwari Sriramadasu commented on HIVE-3652:
-----------------------------------------------

bq. select /*+ MAPJOIN(b,c) */ from FACT a join DIM1 b on a.k1=b.k1 JOIN DIM2 c 
on a.k2=c.k2

I modified the above query to be the following  (with a subquery) :

SELECT /*+ MAPJOIN(dim2) */ subq.m1, subq.m2 FROM (SELECT /*+ MAPJOIN(dim1) */ 
m1, m2, k2  FROM fact JOIN dim1 ON (fact.k1 = dim1.k1)) subq JOIN dim2 ON 
(subq.k2 = dim2.k2);

And it is already launching a single map reduce job for both the joins.

                
> Join optimization for star schema
> ---------------------------------
>
>                 Key: HIVE-3652
>                 URL: https://issues.apache.org/jira/browse/HIVE-3652
>             Project: Hive
>          Issue Type: Improvement
>          Components: Query Processor
>            Reporter: Amareshwari Sriramadasu
>            Assignee: Amareshwari Sriramadasu
>
> Currently, if we join one fact table with multiple dimension tables, it 
> results in multiple mapreduce jobs for each join with dimension table, 
> because join would be on different keys for each dimension. 
> Usually all the dimension tables will be small and can fit into memory and so 
> map-side join can used to join with fact table.
> In this issue I want to look at optimizing such query to generate single 
> mapreduce job sothat mapper loads dimension tables into memory and joins with 
> fact table on different keys as well.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to