[
https://issues.apache.org/jira/browse/HBASE-14882?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15686240#comment-15686240
]
Xiang Li edited comment on HBASE-14882 at 11/23/16 12:29 AM:
-------------------------------------------------------------
Hi [~anoop.hbase]
When implementing ExtendedCell interface for IndividualBytesFieldCell, to
override the following function
{code}
/**
* Write the given Cell into the given buf's offset.
* @param buf The buffer where to write the Cell.
* @param offset The offset within buffer, to write the Cell.
*/
void write(byte[] buf, int offset);
{code}
I found KeyValue#createByteArray() (as follow) can be re-used
{code}
static byte [] createByteArray(final byte [] row, final int roffset,
final int rlength, final byte [] family, final int foffset, int flength,
final byte [] qualifier, final int qoffset, int qlength,
final long timestamp, final Type type,
final byte [] value, final int voffset,
int vlength, byte[] tags, int tagsOffset, int tagsLength) {
{code}
So I need to check with you
1. If ExtendedCell#write() (listed above) needs to write the Cell in KeyValue
format?
2. If the answer for 1 is yes, then may I propose to make
KeyValue#createByteArray() to package-private so that its logic can be used in
other ExtendedCell implementations?
was (Author: water):
Hi [~anoop.hbase]
When implementing ExtendedCell interface for IndividualBytesFieldCell, to
override the following function
{code}
/**
* Write the given Cell into the given buf's offset.
* @param buf The buffer where to write the Cell.
* @param offset The offset within buffer, to write the Cell.
*/
void write(byte[] buf, int offset);
{code}
I found KeyValue#createByteArray() (as follow) can be re-used
{code}
static byte [] createByteArray(final byte [] row, final int roffset,
final int rlength, final byte [] family, final int foffset, int flength,
final byte [] qualifier, final int qoffset, int qlength,
final long timestamp, final Type type,
final byte [] value, final int voffset,
int vlength, byte[] tags, int tagsOffset, int tagsLength) {
{code}
So I need to check with you
1. If ExtendedCell#write() (listed above) needs to write the Cell in KeyValue
format,
2. If the answer for 1 is yes, then may I propose to make
KeyValue#createByteArray() to package-private so that its logic can be used in
other ExtendedCell implementations?
> Provide a Put API that adds the provided family, qualifier, value without
> copying
> ---------------------------------------------------------------------------------
>
> Key: HBASE-14882
> URL: https://issues.apache.org/jira/browse/HBASE-14882
> Project: HBase
> Issue Type: Improvement
> Affects Versions: 1.2.0
> Reporter: Jerry He
> Assignee: Xiang Li
> Fix For: 2.0.0
>
> Attachments: HBASE-14882.master.000.patch,
> HBASE-14882.master.001.patch, HBASE-14882.master.002.patch,
> HBASE-14882.master.003.patch
>
>
> In the Put API, we have addImmutable()
> {code}
> /**
> * See {@link #addColumn(byte[], byte[], byte[])}. This version expects
> * that the underlying arrays won't change. It's intended
> * for usage internal HBase to and for advanced client applications.
> */
> public Put addImmutable(byte [] family, byte [] qualifier, byte [] value)
> {code}
> But in the implementation, the family, qualifier and value are still being
> copied locally to create kv.
> Hopefully we should provide an API that truly uses immutable family,
> qualifier and value.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)