Hi Thomas,

There are some examples in my book, or here 
https://github.com/larsgeorge/hbase-book/tree/master/ch04/src/main/java/coprocessor.
 You can use the live cycle methods start() and stop() to create the resources 
you need. Since the class is instantiated only once this is a common approach 
to share resources. You need to use the provided CoprocosserEnvironment 
instance and its getTable() to retrieve the reference.

Lars

On Nov 30, 2011, at 1:44 PM, Steinmaurer Thomas wrote:

> Hello,
> 
> I want to get a hang on implementing a postPut co-processor. A simple
> test case is pretty much adding 1 to received cell values and store that
> into a second HBase table. I basically have this here:
> 
>       @Override
>       public void postPut(
>               final ObserverContext<RegionCoprocessorEnvironment> c
>               , final Put put
>               , final WALEdit edit
>               , final boolean writeToWAL
>       ) throws IOException {
>               Map<byte[], List<KeyValue>> familyMap =
> put.getFamilyMap();
>               RegionCoprocessorEnvironment e = c.getEnvironment();
>               if
> (Arrays.equals(e.getRegion().getTableDesc().getName(),
> Bytes.toBytes("t"))) {
>                       List<KeyValue> kvs = familyMap.get("f1");
>                       for (KeyValue kv : kvs) {
>                               
>                       }
>               }
>       }
> 
> Now the question is how to process in the for loop to get the cell
> value, increment the value by 1 and store that into a second HBase
> table.
> 
> In general, I guess instantiating a HBase table should be at a central
> point of my region observer class instead of the postPut implementation
> etc ... Concrete examples on co-processors are rather rare, the only
> useful thing I found were different coprocessor unit test classes, but
> they don't go that far.
> 
> Thanks!
> 
> Thomas
> 

Reply via email to