Hi Jilil, I am new to HBase. I used filters on three different columns on a single table, as shown below. The three filters are AND-ed together (must pass all). It works well for me. Not sure it would help you or not.
FilterList filterList = new FilterList(); if (minClickCount != null) { BinaryComparator bComparater = new BinaryComparator(Bytes.toBytes(String.valueOf(minClickCount))); SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes(Constants.IMPRESSION_SUMMARY_COLUMN_FAMILY), Bytes.toBytes(Constants.IMPRESSION_SUMMARY_CLICK_COUNT), CompareFilter.CompareOp.GREATER_OR_EQUAL, bComparater); filter.setFilterIfMissing(true); filterList.addFilter(filter); } if (minCTR != null) { BinaryComparator bComparater = new BinaryComparator(Bytes.toBytes(String.valueOf(minCTR))); SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes(Constants.IMPRESSION_SUMMARY_COLUMN_FAMILY), Bytes.toBytes(Constants.IMPRESSION_SUMMARY_CLICK_THROUGH_RATE), CompareFilter.CompareOp.GREATER_OR_EQUAL, bComparater); filter.setFilterIfMissing(true); filterList.addFilter(filter); } if (proID != null) { SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes(Constants.IMPRESSION_SUMMARY_COLUMN_FAMILY), Bytes.toBytes(Constants.IMPRESSION_SUMMARY_PRO_ID), CompareFilter.CompareOp.EQUAL, Bytes.toBytes(proID)); filter.setFilterIfMissing(true); filterList.addFilter(filter); } scan.setFilter(filterList); Jack. -----Original Message----- From: a...@jalilweb.com [mailto:a...@jalilweb.com] Sent: Wednesday, September 15, 2010 6:19 AM To: user@hbase.apache.org Subject: Server side filters Hello all, I am trying to use HBase for a project. The data base will hold billions of rows. I am struggling to understand how filters work. In particular, I want to be able to scan for rows that contain all of these columns for example: numbers:three & numbers:five & numbers:seven I tried to set a FilterList with MustMatchAll operator and with a QualifierFilter for each of the colum qualifiers I am looking for. The problem is that the scanner returns no results if I set the filters as above. Is there a way to get only the rows that contain a set of column qualifiers? server-side. I know how to do it client side, by iterating through the results, but I don't want my client to iterate through a billion rows. It wouldn't make sense. Many thanks, Jalil ----- End forwarded message -----