You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "wuchengzhi (JIRA)" <ji...@apache.org> on 2014/08/13 05:05:13 UTC

[jira] [Created] (HBASE-11728) Some data miss when scan using PREFIX_TREE DATA-BLOCK-ENCODING

wuchengzhi created HBASE-11728:
----------------------------------

             Summary: Some data miss when scan using PREFIX_TREE DATA-BLOCK-ENCODING
                 Key: HBASE-11728
                 URL: https://issues.apache.org/jira/browse/HBASE-11728
             Project: HBase
          Issue Type: Bug
    Affects Versions: 0.98.4, 0.96.1.1
         Environment: ubuntu12 
hadoop-2.2.0
Hbase-0.96.1.1
SUN-JDK(1.7.0_06-b24)
            Reporter: wuchengzhi



In Scan case, i prepare some data as beflow:

Table Desc (Using the prefix-tree encoding) :
'prefix_tree_test', {NAME => 'cf_1', DATA_BLOCK_ENCODING => 'PREFIX_TREE', TTL => '15552000'}

and i put 5 rows as:
(RowKey , Qualifier, Value)
'a-b-0-0', 'qf_1', 'c1-value'
'a-b-A-1', 'qf_1', 'c1-value'
'a-b-A-1-1402329600-1402396277', 'qf_2', 'c2-value'
'a-b-A-1-1402397227-1402415999', 'qf_2', 'c2-value-2'
'a-b-B-2-1402397300-1402416535', 'qf_2', 'c2-value-3'


so i try to scan the rowKey between 'a-b-A-1' and 'a-b-A-1:' , i and got the corret result:
Test 1: 
Scan scan = new Scan();

scan.setStartRow("a-b-A-1".getBytes());
scan.setStopRow("a-b-A-1:".getBytes());
------------------------------------------------------
'a-b-A-1', 'qf_1', 'c1-value'
'a-b-A-1-1402329600-1402396277', 'qf_2', 'c2-value'
'a-b-A-1-1402397227-1402415999', 'qf_2', 'c2-value-2'


and then i try next , scan to addColumn
Test2:
Scan scan = new Scan();
scan.addColumn(Bytes.toBytes("cf_1") ,  Bytes.toBytes("qf_2"));

scan.setStartRow("a-b-A-1".getBytes());
scan.setStopRow("a-b-A-1:".getBytes());
----------------------------------------------
except:
'a-b-A-1-1402329600-1402396277', 'qf_2', 'c2-value'
'a-b-A-1-1402397227-1402415999', 'qf_2', 'c2-value-2'

but actually i got nonthing. Then i update the addColumn for scan.addColumn(Bytes.toBytes("cf_1") ,  Bytes.toBytes("qf_1")); and i got the expected result 'a-b-A-1', 'qf_1', 'c1-value' as well.

then i do more testing...  i update the case to modify the startRow greater than the 'a-b-A-1' 
Test3:
Scan scan = new Scan();

scan.setStartRow("a-b-A-1-".getBytes());
scan.setStopRow("a-b-A-1:".getBytes());
------------------------------------------------------
except:
'a-b-A-1-1402329600-1402396277', 'qf_2', 'c2-value'
'a-b-A-1-1402397227-1402415999', 'qf_2', 'c2-value-2'

but actually  i got nothing again. i modify the start row greater than 'a-b-A-1-1402329600-1402396277'

Scan scan = new Scan();
scan.setStartRow("a-b-A-1-140239".getBytes());
scan.setStopRow("a-b-A-1:".getBytes());

and i got the expect row as well:
'a-b-A-1-1402397227-1402415999', 'qf_2', 'c2-value-2'

So, i think it may be a bug in the prefix-tree encoding.It happens after the data flush to the storefile, and it's ok when the data in mem-store.



--
This message was sent by Atlassian JIRA
(v6.2#6252)