On Fri, Oct 27, 2017 at 9:58 AM, Josh Elser <[email protected]> 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 <[email protected]> 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 >>> >>>
