hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nick Dimiduk <ndimi...@gmail.com>
Subject Re: Struggles around Cell#getType()
Date Sun, 29 Oct 2017 17:28:53 GMT
On Fri, Oct 27, 2017 at 9:58 AM, Josh Elser <elserj@apache.org> wrote:

> Re-reading https://issues.apache.org/jira/browse/HBASE-8693 that Sergey
> pointed out, I more think that the maybe getType() was misintepreted from
> what Nick originally meant it to be. Maybe intentional, maybe not.
>

The classes under o.a.h.h.types are for helping users building applications
to represent their application data in HBase byte arrays. See the overview
in the package description [0]. One uses implementations of
o.a.h.h.types.DataType to encode values that can then be stored in
o.a.h.h.Cells -- as the row, the column qualifier, or column value. The
type of the Cell is its use within the KeyValue storage engine that is
HBase while the DataType describes a means of getting some Java object
value into or out of a byte array.

[0]:
http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/types/package-summary.html#package.description

On 10/27/17 7:29 AM, Chia-Ping Tsai wrote:
>
>> The CellBuilder#Data type is introduced to make sure all components used
>> to builder cell are IA.Public.
>>
>> bq. Best as I can tell, Cell#getType() should be deprecated
>> As i see it, the Cell#getType, #getTimestamp, #getSequenceId, and #getTag
>> should be deprecated as these methods is some kind of internal info of
>> storage engine. As a key-value store, the key  consisting of row, family,
>> and qualifier is enough to the general purpose. Other fields belong to the
>> specific storage engine, and they should not be in the Cell which is our
>> "frontline" interface of data.
>>
>>
>> On 2017-10-27 06:40, Josh Elser <elserj@apache.org> wrote:
>>
>>> Hiya,
>>>
>>> (Background: see HBASE-19002)
>>>
>>> In trying to write some example Observers, I found myself in a pickle:
>>> how do I tell if a Cell is a Put?
>>>
>>> * Cell#getType() returns a byte which corresponds to a KeyValue.Type
>>> * KeyValue.Type has API to convert a byte to Type
>>> * KeyValue (and thus KeyValue.Type) is IA.Private
>>> * DataType o.a.h.h.typesDataType _appears to me_ to be the replacement
>>> for the KeyValue.Type
>>>
>>> Best as I can tell, Cell#getType() should be deprecated and we should
>>> have some kind of API (method on Cell or CellUtil) which returns a
>>> DataType instead of Type. The details of the byte and the KeyValue.Type
>>> should be hidden inside the implementation.
>>>
>>> My hunch is that this is an accidental omission, but Stack recommended
>>> that I "ask the class" ;). What have I missed? I think this is trivial
>>> to fix; obviously, I don't want to make a fix if I just didn't look hard
>>> enough.
>>>
>>> Thanks!
>>>
>>> - Josh
>>>
>>>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message