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.