Class ColumnInterpreter<T,S,P extends com.google.protobuf.Message,Q extends com.google.protobuf.Message,R extends com.google.protobuf.Message>

java.lang.Object
org.apache.hadoop.hbase.coprocessor.ColumnInterpreter<T,S,P,Q,R>
Direct Known Subclasses:
BigDecimalColumnInterpreter, DoubleColumnInterpreter, LongColumnInterpreter

@LimitedPrivate("Coprocesssor") @Evolving public abstract class ColumnInterpreter<T,S,P extends com.google.protobuf.Message,Q extends com.google.protobuf.Message,R extends com.google.protobuf.Message> extends Object
Defines how value for specific column is interpreted and provides utility methods like compare, add, multiply etc for them. Takes column family, column qualifier and return the cell value. Its concrete implementation should handle null case gracefully. Refer to LongColumnInterpreter for an example.

Takes two generic parameters and three Message parameters. The cell value type of the interpreter is <T>. During some computations like sum, average, the return type can be different than the cell value data type, for eg, sum of int cell values might overflow in case of a int result, we should use Long for its result. Therefore, this class mandates to use a different (promoted) data type for result of these computations <S>. All computations are performed on the promoted data type <S>. There is a conversion method castToReturnType(Object) which takes a <T> type and returns a <S> type. The AggregateIm>lementation uses PB messages to initialize the user's ColumnInterpreter implementation, and for sending the responses back to AggregationClient.

<T> Cell value data type
<S> Promoted data type
<P> PB message that is used to transport initializer specific bytes
<Q> PB message that is used to transport Cell (<T>) instance
<R> PB message that is used to transport Promoted (<S>) instance

  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract S
    add(S l1, S l2)
    Returns sum or non null value among (if either of them is null); otherwise returns a null.
    abstract T
    castToCellType(S response)
    The response message comes as type S.
    abstract S
    provides casting opportunity between the data types.
    abstract int
    compare(T l1, T l2)
    This takes care if either of arguments are null.
    abstract double
    used for computing average of <S> data values.
    abstract T
    This method gets the PB message corresponding to the cell type
    abstract T
    returns the maximum value for this type T
    abstract T
     
    abstract S
    This method gets the promoted type from the proto message
    abstract Q
    This method gets the PB message corresponding to the cell type
    abstract R
    This method gets the PB message corresponding to the promoted type
    abstract P
    This method should return any additional data that is needed on the server side to construct the ColumnInterpreter.
    abstract T
    getValue(byte[] colFamily, byte[] colQualifier, Cell c)
    Returns value of type T
    abstract S
    Returns increment
    abstract void
    This method should initialize any field(s) of the ColumnInterpreter with a parsing of the passed message bytes (used on the server side).
    abstract S
    multiply(S o1, S o2)
    Returns multiplication

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • getValue

      public abstract T getValue(byte[] colFamily, byte[] colQualifier, Cell c) throws IOException
      Returns value of type T
      Throws:
      IOException
    • add

      public abstract S add(S l1, S l2)
      Returns sum or non null value among (if either of them is null); otherwise returns a null.
    • getMaxValue

      public abstract T getMaxValue()
      returns the maximum value for this type T
    • getMinValue

      public abstract T getMinValue()
    • multiply

      public abstract S multiply(S o1, S o2)
      Returns multiplication
    • increment

      public abstract S increment(S o)
      Returns increment
    • castToReturnType

      public abstract S castToReturnType(T o)
      provides casting opportunity between the data types.
    • compare

      public abstract int compare(T l1, T l2)
      This takes care if either of arguments are null. returns 0 if they are equal or both are null;
      • > 0 if l1 > l2 or l1 is not null and l2 is null.
      • < 0 if l1 < l2 or l1 is null and l2 is not null.
    • divideForAvg

      public abstract double divideForAvg(S o, Long l)
      used for computing average of <S> data values. Not providing the divide method that takes two <S> values as it is not needed as of now.
    • getRequestData

      public abstract P getRequestData()
      This method should return any additional data that is needed on the server side to construct the ColumnInterpreter. The server will pass this to the initialize(P) method. If there is no ColumnInterpreter specific data (for e.g., LongColumnInterpreter) then null should be returned.
      Returns:
      the PB message
    • initialize

      public abstract void initialize(P msg)
      This method should initialize any field(s) of the ColumnInterpreter with a parsing of the passed message bytes (used on the server side).
    • getProtoForCellType

      public abstract Q getProtoForCellType(T t)
      This method gets the PB message corresponding to the cell type
      Returns:
      the PB message for the cell-type instance
    • getCellValueFromProto

      public abstract T getCellValueFromProto(Q q)
      This method gets the PB message corresponding to the cell type
      Returns:
      the cell-type instance from the PB message
    • getProtoForPromotedType

      public abstract R getProtoForPromotedType(S s)
      This method gets the PB message corresponding to the promoted type
      Returns:
      the PB message for the promoted-type instance
    • getPromotedValueFromProto

      public abstract S getPromotedValueFromProto(R r)
      This method gets the promoted type from the proto message
      Returns:
      the promoted-type instance from the PB message
    • castToCellType

      public abstract T castToCellType(S response)
      The response message comes as type S. This will convert/cast it to T. In some sense, performs the opposite of castToReturnType(Object)