Any help on this one please.
On Tue, Sep 11, 2012 at 11:19 AM, Jothikumar Ekanath <[email protected]>wrote:
> Hi Stack,
> Thanks for the reply. I looked at the code and i am having
> a very basic confusion on how to use it correctly. The code i wrote
> earlier has the following input and output types and i want it that way
>
> After looking at the sources and examples, i modified my reducer (given
> below), the mapper and job configuration are still the same. Still i see
> the same error. Am i doing something wrong?
>
>
> DailySumMapper extends TableMapper<Text, Text>
> KEYOUT = Text
> VALUEOUT = Text
>
> DailySumReducer extends TableReducer<Text, Text, ImmutableBytesWritable>
>
> KEYIN = Text
> VALUEIN = Text
> KEYOUT = ImmutableBytesWritable
> VALUEOUT = must be always Put or Delete when we extend TableReducer,
> So we are not specifying that.
>
> Code
> public static class DailySumReducer extends TableReducer<Text, Text,
> ImmutableBytesWritable> {
>
> private int count = 0;
> protected void reduce(Text key, Iterable<Text>
> values,Reducer.Context context) throws IOException, InterruptedException{
>
> long inbound = 0l;
> long outbound = 0l;
> for (Text val : values) {
> String text = val.toString();
> int index = text.indexOf("-");
> String in = text.substring(0,index);
> String out = text.substring(index+1,text.length());
> inbound = inbound + Long.parseLong(in);
> outbound = outbound + Long.parseLong(out);
> }
> ByteBuffer data = ByteBuffer.wrap(new byte[16]);
> data.putLong(inbound);
> data.putLong(outbound);
> Put put = new Put(Bytes.toBytes(key.toString()+20120804));
> put.add(Bytes.toBytes("t"), Bytes.toBytes("s"),data.array());
> context.setStatus("Emitting Put " + count++);
> ImmutableBytesWritable ibw = new
> ImmutableBytesWritable(Bytes.toBytes(key.toString()));
> context.write(ibw,put);
>
> }
> }
>
> On Tue, Sep 11, 2012 at 10:38 AM, Stack <[email protected]> wrote:
>
>> On Mon, Sep 10, 2012 at 7:06 PM, Jothikumar Ekanath <[email protected]>
>> wrote:
>> > Hi,
>> > Getting this error while using hbase as a sink.
>> >
>> >
>> > Error
>> > java.io.IOException: Pass a Delete or a Put
>>
>> Would suggest you study the mapreduce jobs that ship with hbase both
>> in main and under test.
>>
>> Looking at your program, you are all Text. The above complaint is
>> about wanting a Put or Delete. Can you change what you produce so
>> Put/Delete rather than Text?
>>
>> St.Ack
>>
>
>