Snippet 2 is wrong - to use PrefixFilter, start row needs to be specified. 

Cheers

On Mar 24, 2014, at 9:42 PM, Li Li <[email protected]> wrote:

> 1.
> byte[] md5=DigestUtils.md5(k1);
> Scan scan=new Scan();
> scan.setStartRow(md5);
> scan.setFilter(new PrefixFilter(md5));
> 
> 2.
> byte[] md5=DigestUtils.md5(k1);
> Scan scan=new Scan();
> scan.setFilter(new PrefixFilter(md5));
> 
> will code snipplet1 be faster than 2?
> 
> On Tue, Mar 25, 2014 at 12:38 PM, Li Li <[email protected]> wrote:
>> thanks. it should work for my use cases(append a char larger than any
>> char used by md5), but I think prefixfilter is more better and can be
>> used without worry about any details
>> 
>> On Tue, Mar 25, 2014 at 12:33 PM, Esteban Gutierrez
>> <[email protected]> wrote:
>>> Hello Li.
>>> 
>>> Have you tried to do something as simple as appending ~ (ascii 7E, last
>>> printable ascii symbol) at the end of the start key as the stop key? It
>>> should work find for you:
>>> 
>>> 
>>> hbase(main):001:0> put 't1',
>>> '7fc56270e7a70fa81a5935b72eacbe297fc56270e7a70fa81a5935b72eacbe29', 'c1',
>>> 'A'
>>> hbase(main):002:0> put 't1',
>>> '9d5ed678fe57bcca610140957afab5719d5ed678fe57bcca610140957afab571', 'c1',
>>> 'B'
>>> hbase(main):003:0> put 't1',
>>> '7fc56270e7a70fa81a5935b72eacbe299d5ed678fe57bcca610140957afab571', 'c1',
>>> 'AB'
>>> hbase(main):004:0> scan 't1',
>>> {STARTROW=>'7fc56270e7a70fa81a5935b72eacbe29',
>>> ENDROW=>'7fc56270e7a70fa81a5935b72eacbe29~'}
>>> ROW                                        COLUMN+CELL
>>> 7fc56270e7a70fa81a5935b72eacbe297fc56270e column=c1:,
>>> timestamp=1395721490980, value=A
>>> 7a70fa81a5935b72eacbe29
>>> 7fc56270e7a70fa81a5935b72eacbe299d5ed678f column=c1:,
>>> timestamp=1395721814374, value=AB
>>> e57bcca610140957afab571
>>> 2 row(s) in 0.0210 seconds
>>> 
>>> 
>>> esteban.
>>> 
>>> 
>>> 
>>> --
>>> Cloudera, Inc.
>>> 
>>> 
>>> 
>>> On Mon, Mar 24, 2014 at 9:17 PM, Li Li <[email protected]> wrote:
>>> 
>>>> have you understand the question? how to get the 'next' string of a
>>>> given string?
>>>> 
>>>> On Tue, Mar 25, 2014 at 11:49 AM, haosdent <[email protected]> wrote:
>>>>> MD5(abc) = "900150983cd24fb0d6963f7d28e17f72"
>>>>> So you could set startkey to "900150983cd24fb0d6963f7d28e17f72" and set
>>>>> stopkey to "900150983cd24fb0d6963f7d28e17f73".
>>>>> 
>>>>> 
>>>>> On Tue, Mar 25, 2014 at 11:45 AM, Li Li <[email protected]> wrote:
>>>>> 
>>>>>> sorry, I want to get all the rows startsWith k1
>>>>>> example:
>>>>>> k1    k2           rowKey
>>>>>> abc aaa  -> MD5(abc)MD5(aaa)
>>>>>> abc bbb  -> MD5(abc)MD5(bbb)
>>>>>> abd ddd  -> MD5(abd)MD5(ddd)
>>>>>> 
>>>>>> how to use scan to get all rows startswith abc
>>>>>> 
>>>>>> On Tue, Mar 25, 2014 at 11:40 AM, haosdent <[email protected]> wrote:
>>>>>>>> I want to get all the rows equals k1.
>>>>>>> 
>>>>>>> Use Get(MD5(k1)MD5(k1)) without set startkey and stopkey.
>>>>>>> 
>>>>>>> 
>>>>>>> On Tue, Mar 25, 2014 at 11:36 AM, Li Li <[email protected]> wrote:
>>>>>>> 
>>>>>>>> I have two string as primary key(k1,k2)
>>>>>>>> and my row key in hbase is MD5(k1)MD5(k1)
>>>>>>>> I want to get all the rows equals k1.I can set startRowKey easily.
>>>>>>>> But How can I calculate stopRowKey?
>>>>>>>> is following correct? what if the last byte of md5 is 127? what about
>>>>>>>> overflow?
>>>>>>>> any tools for this?
>>>>>>>> 
>>>>>>>> Scan scan=new Scan();
>>>>>>>> byte[] start=MD5(key1);
>>>>>>>> scan.setStartRow(start);
>>>>>>>> byte[] end=MD5(key1);
>>>>>>>> end[end.length-1]++
>>>>>>>> scan.setStopRow(end);
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> Best Regards,
>>>>>>> Haosdent Huang
>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> Best Regards,
>>>>> Haosdent Huang
>>>> 

Reply via email to