Currently coprocessors can't do any streaming operations.

I think that would be a necessary feature to perform long running operations on 
the server (like scans) that in turn could produce a lot of data.
GroupBy type aggregates come to mind, but there are many more cases.


Somewhere I read about some approach for server side cursors (can't find that 
discussion now).
I think a simpler approach would be allowing a coprocessor to register new 
InternalScanners that it could implement,
and then have some way of accessing the scanner via the normal ClientScanner 
mechanism.
Maybe by just exposing  long HRegionServer.addScanner(InternalScanner) through 
RegionServerServices.
and adding  public ResultScanner getScanner(long scannerId) ... on HTable, and 
similar on all other clients (I don't know anything about the client beside the 
HTable Java client).


Or something similar (just making this up here).


That way all major parts are already in place (Client Scanners are good in 
performing caching, the coprocessor could just wrap "real" internal scanners, 
etc). The problem is just about how to wire up the parts.


Thoughts? Are questions like this better asked on the dev list?

Thanks.

-- Lars

Reply via email to