You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "subramanian raghunathan (JIRA)" <ji...@apache.org> on 2011/09/21 07:35:08 UTC

[jira] [Commented] (HBASE-3958) use Scan with setCaching() and PageFilter have a problem

    [ https://issues.apache.org/jira/browse/HBASE-3958?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109279#comment-13109279 ] 

subramanian raghunathan commented on HBASE-3958:
------------------------------------------------

As per Jerry Du:
Rangs means Cross regions Scan(multi-regions scan).

The issue is my first HBase program, the following is P-code:
 
create a table which is preSplit 100 regions;
each region have 100 rows;

fill data with row key [0,9999]
 
Scan with startKey and stopKey which cross all regions;[0,9999)
scan.setCaching(3);
scan.setFilter(new PageFilter(5));
 
the out put is:
Row key:
0
1
2
caching border
3
4
region_0 with filter border
5
caching border
6
7
8
caching border
9
region_1 with filter border
10
11
caching border
12
13
14
caching border AND region_2 with filter border
 
 
 
Case another
scan.setCaching(2);
scan.setFilter(new PageFilter(5));
Output will be
Row key:
0
1
caching border
2
3
caching border
4
region_0 with filter border
5
caching border
6
7
caching border
8
9
caching border AND region_1 with filter border
 
scan stop in both caching and region border
 
The Reason is two:
Filter instance is only in one region scan;
in method org.apache.hadoop.hbase.clien.HTable.ClientScanner.next()
do {} while (remainingResultSize > 0 && countdown > 0 && nextScanner(countdown, values == null));
the stop condition is NOT consider scan with Filter
NOT Only PageFilter,any filter will be problem in cross regions scan(multi-regions scan).

> use Scan with setCaching() and PageFilter have a problem
> --------------------------------------------------------
>
>                 Key: HBASE-3958
>                 URL: https://issues.apache.org/jira/browse/HBASE-3958
>             Project: HBase
>          Issue Type: Bug
>          Components: filters, regionserver
>    Affects Versions: 0.90.3
>         Environment: Linux testbox 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/Linux
> java version "1.6.0_23"
> Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
> Java HotSpot(TM) 64-Bit Server VM (build 19.0-b09, mixed mode)
>            Reporter: Jerry Du
>            Priority: Minor
>
> I have a table with 3 ranges,then I scan the table cross all 3 ranges.
> Scan scan = new Scan();
> scan.setCaching(10);
> scan.setFilter(new PageFilter(21));
> [result rows count = 63]
> the Result has 63 rows, each range has scaned,and locally limit to page_szie.That is expect result.
> Then if the page_size = N * caching_size, then result has only page_size rows,only the first range has scanned.
> If page_size is Multiple of caching_size,one range rsult just align fill the caching,then client NOT trrige next range scan.
> Example:
> Scan scan = new Scan();
> scan.setCaching(10);
> scan.setFilter(new PageFilter(20));
> [result rows count = 20]

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