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
>