[
https://issues.apache.org/jira/browse/KYLIN-4762?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17222000#comment-17222000
]
Zhichao Zhang commented on KYLIN-4762:
---------------------------------------
The [PR1463|https://github.com/apache/kylin/pull/1463] only implemented the
function of this optimization on kylin side, there are still some changes on
spark side need to be implemented.
Currently, on spark side, it used 'F__KYLIN_SALES_PART_DTXXX' as agg key, but
FileScan use '17#0' which is equals to shardby column as partition key,
although 'F__KYLIN_SALES_PART_DTXXX' is the alias of '17#0', it's not
'semanticEquals' between them, so in EnsureRequirements of spark side, it will
still add exchange operator. I will raise another pr to solve this.
> Optimize join where there is the same shardby partition num on join key
> -----------------------------------------------------------------------
>
> Key: KYLIN-4762
> URL: https://issues.apache.org/jira/browse/KYLIN-4762
> Project: Kylin
> Issue Type: Improvement
> Components: Query Engine
> Affects Versions: v4.0.0-beta
> Reporter: Zhichao Zhang
> Assignee: Zhichao Zhang
> Priority: Minor
> Attachments: shardby_join.png
>
>
> Optimize join by reducing shuffle when there is the same shard by partition
> number on join key.
> When execute this sql,
> {code:java}
> // code placeholder
> select m.seller_id, m.part_dt, sum(m.price) as s
> from kylin_sales m
> left join (
> select m1.part_dt as pd, count(distinct m1.SELLER_ID) as m1, count(1) as m2
>
> from kylin_sales m1
> where m1.part_dt = '2012-01-05'
> group by m1.part_dt
> ) j
> on m.part_dt = j.pd
> where m.lstg_format_name = 'FP-GTC'
> and m.part_dt = '2012-01-05'
> group by m.seller_id, m.part_dt limit 100;
> {code}
> the execution plan is shown below:
> !shardby_join.png!
> But the join key part_dt has the same shard by partition number, it can be
> optimized to reduce shuffle, similar to bucket join.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)