On Wed, Sep 25, 2013 at 7:52 AM, lars hofhansl <la...@apache.org> wrote:

> myKV.getLength() is alway <= myKV.getBuffer().length.
>
> The buffer here is typically an HFile block.


    Lars, I don't quite understand this, could you please elaborate a bit
more? Also if the KV's buffer size is bigger than the one returned by
"readLength()", what would be those extra bytes in the buffer?

    It seems to me that the Scanner and InternalScanner packs different
numbers of extra bytes to the buffer, I tired to pinpoint the scanner codes
to where the KV objects is created but without too much luck. Could you
show me where it is done?

Thanks a lot.

Kim


> We use that buffer and pass it up the chain without making any further
> copy of the KV.
>

>
> -- Lars
>
>
>
> ----- Original Message -----
> From: Kim Chew <kchew...@gmail.com>
> To: user@hbase.apache.org
> Cc:
> Sent: Wednesday, September 25, 2013 12:06 AM
> Subject: KeyValue.getLength() question
>
> Hello,
>
> I have a "strange" situation that I can't wrap my head around it. Say, for
> example, I have an KeyValue instance, shouldn't
>
>     myKV.getLength() == myKV.getBuffer().length ?
>
> Given that, "getLength()" returns "Length of bytes this KeyValue occupies
> in getBuffer()<
> http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/KeyValue.html#getBuffer%28%29
> >
> ."
>
>
> In my case the value returned by "myKV.getBuffer().length" is greater than
> "myKV.getLength()". What possibly went wrong?
>
> TIA
>
> Kim.
>
>

Reply via email to