@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.
Constructor and Description |
---|
ColumnInterpreter() |
Modifier and Type | Method and 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 |
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
|
abstract T |
getMaxValue()
returns the maximum value for this type T
|
abstract T |
getMinValue() |
abstract S |
getPromotedValueFromProto(R r)
This method gets the promoted type from the proto message
|
abstract Q |
getProtoForCellType(T t)
This method gets the PB message corresponding to the cell type
|
abstract R |
getProtoForPromotedType(S s)
This method gets the PB message corresponding to the promoted type
|
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)
Returns value of type T
|
abstract S |
increment(S o)
Returns increment
|
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)
Returns multiplication
|
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)
Copyright © 2007–2020 The Apache Software Foundation. All rights reserved.