hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lars George <lars.geo...@gmail.com>
Subject Re: First postPut coprocessor test drive
Date Wed, 30 Nov 2011 13:35:46 GMT
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
> 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message