Hi Li, option 1 should be better for you, as discussed few days ago here due HBASE-7010 you need to specify the start row.
esteban. -- Cloudera, Inc. On Mon, 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 > >>> >
