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