@InterfaceAudience.LimitedPrivate(value="Coprocesssor") @InterfaceStability.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
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 and Description |
---|
ColumnInterpreter() |
Modifier and Type | Method and Description |
---|---|
abstract S |
add(S l1,
S l2)
nn * @return 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 |
castToReturnType(T o)
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 |
divideForAvg(S o,
Long l)
used for computing average of <S> data values.
|
abstract T |
getCellValueFromProto(Q q)
This method gets the PB message corresponding to the cell type n * @return the cell-type
instance from the PB message
|
abstract T |
getMaxValue()
returns the maximum value for this type T n
|
abstract T |
getMinValue() |
abstract S |
getPromotedValueFromProto(R r)
This method gets the promoted type from the proto message n * @return the promoted-type
instance from the PB message
|
abstract Q |
getProtoForCellType(T t)
This method gets the PB message corresponding to the cell type n * @return the PB message for
the cell-type instance
|
abstract R |
getProtoForPromotedType(S s)
This method gets the PB message corresponding to the promoted type n * @return the PB message
for the promoted-type instance
|
abstract P |
getRequestData()
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)
nnn * @return value of type T n
|
abstract S |
increment(S o)
nn
|
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).
|
abstract S |
multiply(S o1,
S o2)
nnn
|
public ColumnInterpreter()
public abstract T getValue(byte[] colFamily, byte[] colQualifier, Cell c) throws IOException
IOException
public abstract S add(S l1, S l2)
public abstract T getMaxValue()
public abstract T getMinValue()
public abstract S castToReturnType(T o)
public abstract int compare(T l1, T l2)
public abstract double divideForAvg(S o, Long l)
public abstract P getRequestData()
initialize(P)
method. If there is
no ColumnInterpreter specific data (for e.g.,
LongColumnInterpreter
) then null should be
returned.public abstract void initialize(P msg)
public abstract Q getProtoForCellType(T t)
public abstract T getCellValueFromProto(Q q)
public abstract R getProtoForPromotedType(S s)
public abstract S getPromotedValueFromProto(R r)
public abstract T castToCellType(S response)
castToReturnType(Object)
nnCopyright © 2007–2020 The Apache Software Foundation. All rights reserved.