Cursor functionality for results generated by Coprocessors
----------------------------------------------------------

                 Key: HBASE-3607
                 URL: https://issues.apache.org/jira/browse/HBASE-3607
             Project: HBase
          Issue Type: New Feature
          Components: coprocessors
            Reporter: Himanshu Vashishtha


I tried to come up with a scanner like functionality for results generated by 
coprocessors at region level. 
This is just a poc, and it will be good to have your comments on it.

It has support for both Incremental and In-memory Result sets. Attached is a 
patch that has a test case for an incremental result (i.e., client receives a 
cursorId from the CP core method, it instantiates a cursor object and iterates 
over the result set. He can set a cache limit on the CursorCallable object to 
reduce the number of rpc --> just like scanners.

In its current state, it has some limitations too :)), like, it is region 
specific only, i.e., one can instantiate and use cursor at one region only (and 
that region is determined by the input row while instantiating the cursor). I 
will try to expand it so that it can have atleast a sequential access to other 
regions, but as I said, I want the opinion of experts to know whether this 
approach really makes some sense or not.
I have tested it with the inbuilt testing framework on my laptop only.

It will be good if I copy the use case here in the description too:
Test table has rows like:
 /**
   * The scenario is that I have these rows keys in the test table:
  'aaa-123'
  'aaa-456'
  'abc-111'
  'abd-111'
  'abd-222'

  & I want to return:
  ('aaa', 2)
  ('abc', 1)
  ('abd', 2)


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to