Can you use other string for fake value ?
DOESNOTEXIST is a bit long. Shouldn't be difficult to come up with a single 
character string that doesn't appear in the first two columns. 

Cheers

On Jan 17, 2014,  at 8:34 PM, "[email protected]" <[email protected]> 
wrote:

> Hi Lars,
> 
> public class AggregationCountForMultiFilter {
> 
> private static final byte[] TABLE_NAME = Bytes.toBytes("userdigest");
> private static final byte[] CF = Bytes.toBytes("cf");
> private static final byte[] FAKE_VLAUE = Bytes.toBytes("DOESNOTEXIST");
> 
> public static void main(String[] args) {
> 
> Configuration conf = new Configuration();
> Configuration configuration = HBaseConfiguration.create(conf);
> AggregationClient aggregationClient = new AggregationClient(configuration);
> 
> byte[] colA = Bytes.toBytes("tags");
> byte[] colB = Bytes.toBytes("googleid");
> byte[] colC = Bytes.toBytes("createtime");
> 
> List<Filter> filters = new ArrayList<Filter>();
> 
> SingleColumnValueFilter filter1 = new SingleColumnValueFilter(CF, colA, 
> CompareOp.NOT_EQUAL, FAKE_VLAUE);
> filter1.setFilterIfMissing(true);
> filters.add(filter1);
> 
> SingleColumnValueFilter filter2 = new SingleColumnValueFilter(CF, colB, 
> CompareOp.NOT_EQUAL, FAKE_VLAUE);
> filter2.setFilterIfMissing(true);
> filters.add(filter2);
> 
> SingleColumnValueFilter filter3 = new SingleColumnValueFilter(CF, colC, 
> CompareOp.EQUAL, new RegexStringComparator("^2014-01-15"));
> filter3.setFilterIfMissing(true);
> filters.add(filter3);
> 
> FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL, 
> filters);
> 
> Scan scan = new Scan();
> scan.addFamily(CF);
> scan.setFilter(filterList);
> 
> long rowCount = 0;
> try {
> rowCount = aggregationClient.rowCount(TABLE_NAME, null, scan);
> } catch (Throwable e) {
> e.printStackTrace();
> }
> System.out.println("rowCount: " + rowCount);
> }
> }
> }
> 
> The HBase version 0.94.6-cdh4.3.1 
> 
> Thanks,
> Lei
> 
> 
> 
> [email protected]
> 
> From: lars hofhansl
> Date: 2014-01-18 11:18
> To: [email protected]
> Subject: Re: Re: How to quickly count the rows that meet several conditions 
> using hbase coprocessor
> Offhand there is no reason for that.
> If you send some sample code that can seed the data and then run the filter 
> that shows the problem, I'll offer to do some profiling.
> 
> Which version of HBase are you using?
> 
> -- Lars 
> 
> 
> ________________________________
> From: "[email protected]" <[email protected]>
> To: user <[email protected]> 
> Cc: user <[email protected]> 
> Sent: Friday, January 17, 2014 5:24 PM
> Subject: Re: Re: How to quickly count the rows that meet several conditions 
> using hbase coprocessor
> 
> Hi, 
> 
> I have tried.  
> For a talbe with about 600 million rowkey,  just pass a single 
> QualifierFilter,  it can get the result quickly. 
> But when i add the SingleColumnValueFilter with FilterList, it becoumes very 
> slow and i can't stand it. 
> 
> I think i can write my own custumed aggregation client.  Is there any example 
> or user guide about how to write custumed aggregation client using 
> coprocessor?
> 
> Thanks,
> Lei
> 
> 
> 
> 
> [email protected]
> 
> From: Ted Yu
> Date: 2014-01-17 18:03
> To: [email protected]
> CC: user
> Subject: Re: How to quickly count the rows that meet several conditions using 
> hbase coprocessor
> Take a look at 
> http://hbase.apache.org/0.94/apidocs/org/apache/hadoop/hbase/client/coprocessor/AggregationClient.html#rowCount(byte[],%20org.apache.hadoop.hbase.coprocessor.ColumnInterpreter,%20org.apache.hadoop.hbase.client.Scan)
> 
> You can pass custom filter through Scan parameter. 
> 
> Cheers
> 
> On Jan 16, 2014, at 11:58 PM, "[email protected]" <[email protected]> 
> wrote:
> 
>> Hi,
>> 
>> I know that hbase copocessor provides a quick way to count the rows of a 
>> table.
>> But how can i count the rows that meet several conditions.
>> 
>> Take this for example. 
>> I have a hbase table with one column family, several columns. I want to 
>> caculate the number of rows that meet 3 conditions:
>> has column1
>> has column2
>> has column3  and the value of column3 satisfy a regular expression
>> 
>> Thans,
>> Lei
>> 
>> 
>> 
>> [email protected]

Reply via email to