Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase >> mail # user >> java.io.IOException: Pass a Delete or a Put


Copy link to this message
-
Re: java.io.IOException: Pass a Delete or a Put

Did you compare your example to this...

http://hbase.apache.org/book.html#mapreduce.example
7.2.2. HBase MapReduce Read/Write Example
?
On 9/12/12 1:02 PM, "Jothikumar Ekanath" <[EMAIL PROTECTED]> wrote:

>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
>>>
>>
>>
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB