I notices an unanswered question: “Check and Put method used with
a long)”.  I would like to ask it in a slightly different form:
Can you customize (within reasonable restrictions)) the
condition for the atomic update?

The HTable method

        checkAndPut(byte[] row,
  byte[] family,
  byte[] qualifier,
CompareFilter.CompareOp<https://archive.cloudera.com/cdh5/cdh/5/hbase/devapidocs/org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html>
 compareOp,
  byte[] value,
Put<https://archive.cloudera.com/cdh5/cdh/5/hbase/devapidocs/org/apache/hadoop/hbase/client/Put.html>
 put)

Uses the CompareFilter.CompareOp enum. But what I would like is the complete 
customization of compareOp, with my own logic.

And still, can you apply the existing checkAndPut with compareOp on a field 
that contains integer, or long, of my own class (in binary form)? (and 
naturally I need GREATER be in context of java.lang.Integer, not binary strings 
that represent integers).

Or, if not, how to solve the following use case:

Several spark executors updating the data structurer (in HBase table) that 
contains record as

(pid:String, hits:int)

I want the update only happens if the new value for the field hits is grater 
that the current value.
Now suppose one of executors (E1) has a new value (V1) for the given pid. If it 
operates non-atomically  it could read current value V0, compare with new value 
and tries to update (if V1 > V0). But it could happen that current value was 
already been increased to V2 by another executor. The E1 knows the prev. value 
and could use regular checkAndPut, so that update would not happen if current 
value was changed, but E1 still does’t know if new value (V1) is bigger than 
updated current value (V2), and and has no way but to attempt the same update 
again… (if V1 >V2).

I hope I described the use case clearly, it seems very typical and elementary 
one. Can somebody please hint how to solve it?
Thank you
Alexey

This message, including any attachments, is the property of Sears Holdings 
Corporation and/or one of its subsidiaries. It is confidential and may contain 
proprietary or legally privileged information. If you are not the intended 
recipient, please delete it without reading the contents. Thank you.

Reply via email to