[ 
https://issues.apache.org/jira/browse/HADOOP-2334?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12549217
 ] 

Jim Kellerman commented on HADOOP-2334:
---------------------------------------

Kevin Beyer - 06/Dec/07 12:12 PM
> Would it be difficult to allow the user to declare a WritableComparable class 
> for the key when creating a table?
> I think we should be able to get enough performance and gain considerable 
> flexibility. The default could be
>Text or BytesWritable, or whatever you choose. For jaql, I would really like 
>to use my own WritableComparable
> as the key.

What I was proposing as the row key was WritableComparable. Thus (for example) 
the following APIs:

{code}
public byte[] get(Text row, Text column) throws IOException
public byte[] get(Text row, Text column) throws IOException
public HScannerInterface obtainScanner(Text[] columns, Text startRow)  throws 
IOException
{code}

would become:

{code}
public byte[] get(WritableComparable row, Text column) throws IOException
public byte[] get(WritableComparable row, Text column) throws IOException
public HScannerInterface obtainScanner(Text[] columns, WritableComparable 
startRow)  throws IOException
{code}

Do you want to tie row keys to be a specific kind of WritableComparable, or 
would this work for you?


> [hbase] VOTE: should row keys be less restrictive than hadoop.io.Text?
> ----------------------------------------------------------------------
>
>                 Key: HADOOP-2334
>                 URL: https://issues.apache.org/jira/browse/HADOOP-2334
>             Project: Hadoop
>          Issue Type: Wish
>          Components: contrib/hbase
>    Affects Versions: 0.16.0
>            Reporter: Jim Kellerman
>            Assignee: Jim Kellerman
>            Priority: Minor
>             Fix For: 0.16.0
>
>
> I have heard from several people that row keys in HBase should be less 
> restricted than hadoop.io.Text.
> What do you think?
> At the very least, a row key has to be a WritableComparable. This would lead 
> to the most general case being either hadoop.io.BytesWritable or 
> hbase.io.ImmutableBytesWritable. The primary difference between these two 
> classes is that hadoop.io.BytesWritable by default allocates 100 bytes and if 
> you do not pay attention to the length, (BytesWritable.getSize()), converting 
> a String to a BytesWritable and vice versa can become problematic. 
> hbase.io.ImmutableBytesWritable, in contrast only allocates as many bytes as 
> you pass in and then does not allow the size to be changed.
> If we were to change from Text to a non-text key, my preference would be for 
> ImmutableBytesWritable, because it has a fixed size once set, and operations 
> like get, etc do not have to something like System.arrayCopy where you 
> specify the number of bytes to copy.
> Your comments, questions are welcome on this issue. If we receive enough 
> feedback that Text is too restrictive, we are willing to change it, but we 
> need to hear what would be the most useful thing to change it to as well.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to