hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Frank Luo <j...@merkleinc.com>
Subject RE: Hbase: Is possible to filter by integer value if the value is saved as string?
Date Fri, 19 Jul 2013 14:44:10 GMT
OK, let's say it is stored as an integer, how to compare then?

As Jean-Marc pointed out, negative numbers is greater than positive ones using ByteArrayComparable.

-----Original Message-----
From: Jean-Marc Spaggiari [mailto:jean-marc@spaggiari.org] 
Sent: Friday, July 19, 2013 5:08 AM
To: user@hbase.apache.org
Subject: Re: Hbase: Is possible to filter by integer value if the value is saved as string?

I agree with Anil... Store it as an integer, not as as String. That will help for the comparison
(be carreful with negative values comparisons.).

Worst case, run a MR job to convert them.

2013/7/19 anil gupta <anilgupta84@gmail.com>

> Only way to achieve this is to write your own ByteArrayComparable.
> BinaryComparator wont work for your case.
> But, I am wondering why you would store an Integer as String when you 
> want to do numerical comparison?
>
>
> On Thu, Jul 18, 2013 at 6:03 PM, Ted Yu <yuzhihong@gmail.com> wrote:
>
> > What would happen to this ?
> >
> >         System.out.println(c.compareTo(Bytes.toBytes("30")));
> >
> > On Thu, Jul 18, 2013 at 5:55 PM, Kevin <kevin.macksamie@gmail.com>
> wrote:
> >
> > > Sure, try using the BinaryComparator. For example,
> > >
> > >         BinaryComparator c = new
> BinaryComparator(Bytes.toBytes("200"));
> > >         System.out.println(c.compareTo(Bytes.toBytes("201"))); //
> returns
> > > -1
> > >
> > >
> > > On Thu, Jul 18, 2013 at 4:28 PM, Frank Luo <jluo@merkleinc.com> wrote:
> > >
> > > > That requires creating my own ByteArrayComparable class and 
> > > > deploy to
> > all
> > > > servers, right?
> > > >
> > > > My company doesn't want to "customize" hbase, hence is not an 
> > > > option
> to
> > > me.
> > > >
> > > > -----Original Message-----
> > > > From: Ted Yu [mailto:yuzhihong@gmail.com]
> > > > Sent: Thursday, July 18, 2013 3:25 PM
> > > > To: user@hbase.apache.org
> > > > Subject: Re: Hbase: Is possible to filter by integer value if 
> > > > the
> value
> > > is
> > > > saved as string?
> > > >
> > > > Looks like you should be able to do so by passing your own 
> > > > comparator
> > to:
> > > >
> > > >   public SingleColumnValueFilter(final byte [] family, final 
> > > > byte [] qualifier,
> > > >
> > > >       final CompareOp compareOp, final ByteArrayComparable
> comparator)
> > {
> > > > Cheers
> > > >
> > > > On Thu, Jul 18, 2013 at 1:20 PM, Frank Luo <jluo@merkleinc.com>
> wrote:
> > > >
> > > > > I don't think it is possible, but would like to confirm with 
> > > > > smart folks out there.
> > > > >
> > > > > Supposing I have a cell storing an integer but in string
> > presentation.
> > > > > For example, here is how I put a value of 200:
> > > > >
> > > > >         put.add(family, qualifier, Bytes.toBytes("200"));
> > > > >
> > > > > Now, I want to scan with a filter that only return if the 
> > > > > value is larger than 250. Is that possible?
> > > > >
> > > > > Thanks in advance
> > > > >
> > > > > Frank
> > > > >
> > > >
> > > >
> > >
> >
>
>
>
> --
> Thanks & Regards,
> Anil Gupta
>
Mime
View raw message