Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

Switch to Plain View
HBase >> mail # user >> paging results filter


Copy link to this message
-
paging results filter
Hi,

I need to create a client function that allows paging of scan results
(initially return results 1-20, then click on page to to show results
21-40, 41-60, etc.) without needing to remember the start rowkey.  I
beleive that a filter would be far more efficient than implementing the
logic client-side.  I couldn't find any OOTB filter for this functionality
so I wrote the class below.  It seems to work fine for me, but can anyone
comment if this approach makes sense?  Is there another OOTB filter that I
can use instead?

Thank you,

Toby

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.hbase.filter.FilterBase;
public class PageOffsetFilter extends FilterBase {
 private long startRowCount;
 private long endRowCount;

 private int count = 0;
 public PageOffsetFilter() {
 }

 public PageOffsetFilter(long pageNumber, long pageSize) {

  if(pageNumber<1)
   pageNumber=1;

  startRowCount = (pageNumber - 1) * pageSize;
  endRowCount = (pageSize * pageNumber)-1;
 }
 @Override
 public boolean filterAllRemaining() {
  return count > endRowCount;
 }
 @Override
 public boolean filterRow() {

  count++;
  if(count <= startRowCount) {
   return true;
  } else {
   return false;
  }

 }

 @Override
 public void readFields(DataInput dataInput) throws IOException {

  this.startRowCount = dataInput.readLong();
  this.endRowCount = dataInput.readLong();
 }
 @Override
 public void write(DataOutput dataOutput) throws IOException {
  dataOutput.writeLong(startRowCount);
  dataOutput.writeLong(endRowCount);
 }

}
+
Mohammad Tariq 2013-01-24, 12:52
+
Toby Lazar 2013-01-24, 13:14
+
Anoop Sam John 2013-01-25, 03:34
+
ramkrishna vasudevan 2013-01-25, 04:15
+
Mohammad Tariq 2013-01-25, 05:15
+
Toby Lazar 2013-01-25, 14:23
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB