As I said, look at the lily library they have solved exactly that problem, I've 
used that before.

It has encodings for Ints/Longs/Floats/Doubles/BigDecimals, to encode them such 
the byte array will sort according to the magnitude of the value which includes 
the sign and the floating point exponent.

It's a very common problem :)


-- Lars



----- Original Message -----
From: David Koch <[email protected]>
To: [email protected]
Cc: 
Sent: Thursday, November 29, 2012 3:00 PM
Subject: Re: Using doubles and longs as ordering row values

Hello,

I am having a similar issue, only I need to preserve the order of
qualifiers which are serialized signed longs - rather than row keys. The
latter is addressed by the orderly library which was mentioned above. Can
this library be re-used for my purpose? I imagine this is not an exotic
requirement so I am also interested in knowing how other people have solved
this problem.

Thank you,

/David


On Tue, Nov 6, 2012 at 6:07 AM, Jonathan Bishop <[email protected]>wrote:

> Thanks Dave,
>
> That looks like what I need.
>
> Jon
>
>
> On Mon, Nov 5, 2012 at 4:27 PM, Dave Latham <[email protected]> wrote:
>
> > This fork looks a bit more up to date:
> > https://github.com/ndimiduk/orderly
> >
> > On Mon, Nov 5, 2012 at 4:26 PM, Dave Latham <[email protected]> wrote:
> >
> > > Here's a project to deal with this issue specifically.  I'm not sure of
> > > it's status:
> > > https://github.com/conikeec/orderly
> > >
> > >
> > > On Mon, Nov 5, 2012 at 4:01 PM, lars hofhansl <[email protected]>
> > wrote:
> > >
> > >> Have a look at the lily library. It has code to encode Longs/Doubles
> > into
> > >> bytes such that resulting bytes sort as expected based on the numbers.
> > >>
> > >> -- Lars
> > >>
> > >>
> > >>
> > >> ________________________________
> > >>  From: Jonathan Bishop <[email protected]>
> > >> To: "[email protected]" <[email protected]>
> > >> Sent: Monday, November 5, 2012 10:41 AM
> > >> Subject: Using doubles and longs as ordering row values
> > >>
> > >> Hi,
> > >>
> > >> In my application my row values are doubles. I would like my scans to
> > >> traverse the rows in order of increasing values.
> > >>
> > >> But if I simply use
> > >>
> > >> double d  = ....
> > >> byte[] row = Bytes.toBytes(d);
> > >>
> > >> I will get an ordering which is based on the byte values of doubles,
> not
> > >> on
> > >> the value of the doubles themselves.
> > >>
> > >> I see also that integer values have the same issue due to the first
> bit
> > >> being the sign bit. So negative values will come after positive
> values.
> > >>
> > >> Any suggestions?
> > >>
> > >> Thanks,
> > >>
> > >> Jon
> > >>
> > >
> > >
> >
>

Reply via email to