[ 
https://issues.apache.org/jira/browse/PIG-171?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12598862#action_12598862
 ] 

Amir Youssefi commented on PIG-171:
-----------------------------------

As Pi Song mentioned LIMIT n,m (or LIMIT n TO m) doesn't show many optimization 
opportunities on map side. We have to send all top m rows from mapper to 
reducer. 

Now consider we have those sent to one reducer. Next step is to run BOTTOM 
(m-n+1) function over results of maps already sent to reducer. We can have a 
BOTTOM AWARE MERGER (which is reverse of results on one node and we are done. 

I don't recommend making it more complicated but if somebody is concerned about 
chocking one reducer with large m row data-sets we can send results of the 
first step to multiple reducers and then running a second Map Reduce job with 
TOP (m-n+1) with comparator of -1 * MY_COMPARATOR() and single reducer to get 
the final results.
 
I suggest we think about LIMIT n,m as extension of LIMIT n and do that later.

> Top K
> -----
>
>                 Key: PIG-171
>                 URL: https://issues.apache.org/jira/browse/PIG-171
>             Project: Pig
>          Issue Type: New Feature
>            Reporter: Amir Youssefi
>            Assignee: Amir Youssefi
>
> Frequently, users are interested on Top results (especially Top K rows) . 
> This can be implemented efficiently in Pig /Map Reduce settings to deliver 
> rapid results and low Network Bandwidth/Memory usage.
>  
>  Key point is to prune all data on the map side and keep only small set of 
> rows with Top criteria . We can do it in Algebraic function (combiner) with 
> multiple value output. Only a small data-set gets out of mapper node.
> The same idea is applicable to solve variants of this problem:
>   - An Algebraic Function for 'Top K Rows'
>   - An Algebraic Function for 'Top K' values ('Top Rank K' and 'Top Dense 
> Rank K')
>   - TOP K ORDER BY.
> Another words implementation is similar to combiners for aggregate functions 
> but instead of one value we get multiple ones. 
> I will add a sample implementation for Top K Rows and possibly TOP K ORDER BY 
> to clarify details.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to