Hi Guys,
 Thanku for your valuable suggestion.
I see this works fine in cases were key values are unique.

In my use cases the values are as follows:
*<bookid>,<eid>,<rating>*
0000012742,3244,1
0028604164,2344,3
0062059017,2344,5
0075546701,2344,1
0130213268,2344,8
0140105425,5675,3
0141304286,5677,6
0195052668,3453,8
0198775024,2342,9
0000012742,2346,2
0028604164,9789,4
0062059017,2346,3
0075546701,2345,2
0130213268,8907,4
0140105425,5675,5
0141304286,3457,6
0195052668,5678,7
0198775024,8975,8
0000012742,6798,3
0028604164,5434,7
0062059017,9754,4
0075546701,7890,6
0130213268,7655,7
0140105425,7564,8
0141304286,8433,3
0195052668,3252,6
0198775024,7765,7

My goal here to right a program which will output the books id's sorted (
ascending) by the average of rating.
I am done till the following steps:
1. Map : create pairs key, value and context.write(key,value)
2. Reducer: For each key    sum of ratings/no of book entries.
context(key,avg_rating)

Example output will be like:
0075546701,4.6v
0062059017,2.1
0195052668,6.1
0198775024,2.7

My next step is to sort the books ids based on (ascending) order of the
average rating.
How to write the program for getting the example output as follows:

0062059017,2.1
0198775024,2.7
0075546701,4.6
0195052668,6.1


Please let me know if my approach is wrong  as i am new to hadoop.

Thanks in advance,
--Shashi.




On Wed, Sep 14, 2011 at 11:32 AM, Sudharsan Sampath <sudha...@gmail.com>wrote:

> One way is to reverse the  <key,value> output in the mapper to emit<1,
> 10050> and in the reducer, use a treeset to order ur values.. for each value
> o/p <value, key> in the reducer.
>
> With this O/P will be sorted as per ur needs within each reducer. If u need
> a total sorted o/p, u can use a single reducer or design ur partition logic
> accordingly.
>
> Thanks
> Sudhan S
>
>
> On Wed, Sep 14, 2011 at 6:14 AM, ksgupta misc <ksgupta.m...@gmail.com>wrote:
>
>> Hi,
>>
>> I have the content like
>> *10103*,1042279,*4*
>> *10070*,1001089,*5*
>> *10102*,1015504,*7*
>> *10080*,1024369,*7*
>> *10050*,1025671,*1*
>> ...
>> from which i separated the key,value pairs and got the output after a
>> single map and reduce as follows:
>>
>> 10050  1
>> 10070  5
>> 10080  7
>> 10102  7
>> 10103  4
>> ...
>>
>> I require to sort the output<key,value> pair by value (In ascending
>> order).
>> Please let me know how can i go ahead.
>>
>> Required output:
>> 10050  1
>> 10103  4
>> 10070  5
>> 10080  7
>> 10102  7
>>
>> Thanks in advance,
>> --Shashi
>>
>>
>>
>>
>>
>

Reply via email to