You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pig.apache.org by "Alan Gates (JIRA)" <ji...@apache.org> on 2009/01/05 22:51:44 UTC
[jira] Commented: (PIG-580) PERFORMANCE: Combiner should also be
used when there are distinct aggregates in a foreach following a group
provided there are no non-algebraics in the foreach
[ https://issues.apache.org/jira/browse/PIG-580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12660944#action_12660944 ]
Alan Gates commented on PIG-580:
--------------------------------
In CombinerOptimizer.visitDistinct you have:
{code}
+ if(sawDistinctAgg) {
+ // we want to combine only in the case where there is only
+ // one PODistinct which is the only input to an agg
+ // we apparently have seen a PODistinct before, so lets not
+ // combine.
+ sawNonAlgebraic = true;
+ }
{code}
but I can envision a case where you want to count multiple distinct things:
{code}
A = load ...
B = group A by $0;
C = foreach B {
Aa = B.$1;
Ab = distinct Aa;
Ba = B.$2;
Bb = distinct Ba;
generate group, COUNT(Ab), COUNT(Bb);
}
Is there a reason we need to not use the combiner with multiple distincts?
> PERFORMANCE: Combiner should also be used when there are distinct aggregates in a foreach following a group provided there are no non-algebraics in the foreach
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: PIG-580
> URL: https://issues.apache.org/jira/browse/PIG-580
> Project: Pig
> Issue Type: Improvement
> Affects Versions: types_branch
> Reporter: Pradeep Kamath
> Assignee: Pradeep Kamath
> Fix For: types_branch
>
> Attachments: PIG-580-v2.patch, PIG-580.patch
>
>
> Currently Pig uses the combiner only when there is foreach following a group when the elements in the foreach generate have the following characteristics:
> 1) simple project of the "group" column
> 2) Algebraic UDF
> The above conditions exclude use of the combiner for distinct aggregates - the distinct operation itself is combinable (irrespective of whether it feeds to an algebraic or non algebraic udf). So if the following foreach should also be combinable:
> {code}
> ..
> b = group a by $0;
> c = foreach b generate { x = distinct a; generate group, COUNT(x), SUM(x.$1) }
> {code}
> The combiner optimizer should cause the distinct to be combined and the final combine output should feed the COUNT() and SUM() in the reduce.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.