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 >>>>
