You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Chaitanya Kumar (JIRA)" <ji...@apache.org> on 2014/03/26 08:35:15 UTC
[jira] [Created] (HBASE-10836) Filters failing to compare negative
numbers (int,float,double or long)
Chaitanya Kumar created HBASE-10836:
---------------------------------------
Summary: Filters failing to compare negative numbers (int,float,double or long)
Key: HBASE-10836
URL: https://issues.apache.org/jira/browse/HBASE-10836
Project: HBase
Issue Type: Brainstorming
Components: Filters
Affects Versions: 0.94.2
Environment: Psuedo-mode
Reporter: Chaitanya Kumar
I have come across an issue while using filters to get a result.
For eg.
I have created a table and its specifications are as follows :
table name --> test
column family --> cf
row keys --> rowKey1 - rowKey10 (10 different row keys)
column qualifier --> integerData
For different rowkeys, the qualifier 'integerData' contains either positive or negative integer values (data loaded randomly).
Now, while I am trying to retrieve the data from the table based on a filter condition, its failing to give the desired result.
For eg. say,
My table contains following data :
[-50,-40,-30,-20,-10,10,20,30,40,50]
I want to get only those values which are greater than or equal to 40.
Following is the code for the filter set on scan :
********************************************
Scan scan = new Scan();
scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes(" integerData"));
int i = 40;
Filter filter = new ValueFilter(CompareOp.GREATER_OR_EQUAL,new BinaryComparator(Bytes.toBytes(i)));
scan.setFilter(filter);
*********************************************
The result should be : 40 and 50
BUT, the actual result is : -50, -40, -30, -20, -10, 40, 50
I have read few posts which addressed this issue, and few people provided the solution as:
1) write a custom comparator, as BinaryComparator is not meant for number comparison
OR
2) retrieve all the values as integer and then compare
BUT, I want to know if there is any other way to achieve this.
Because this seems to be a very basic need, i.e. comparing numbers, and I feel HBase should have something straight forward to deal with this.
This comparison fails only when the negative numbers are involved.
I am not able to get the right way to do it.
My Hbase version is 0.94.2 and I am running it in pseudo mode.
Can anyone help me on this ?
--
This message was sent by Atlassian JIRA
(v6.2#6252)