@InterfaceAudience.Private 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) |
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) |
abstract S |
increment(S o) |
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) |
public abstract T getValue(byte[] colFamily, byte[] colQualifier, Cell c) throws IOException
colFamily
- colQualifier
- c
- IOException
public abstract S add(S l1, S l2)
l1
- l2
- public abstract T getMaxValue()
public abstract T getMinValue()
public abstract S castToReturnType(T o)
o
- public abstract int compare(T l1, T l2)
public abstract double divideForAvg(S o, Long l)
o
- 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)
msg
- public abstract Q getProtoForCellType(T t)
t
- public abstract T getCellValueFromProto(Q q)
q
- public abstract R getProtoForPromotedType(S s)
s
- public abstract S getPromotedValueFromProto(R r)
r
- public abstract T castToCellType(S response)
castToReturnType(Object)
response
- Copyright © 2007–2019 The Apache Software Foundation. All rights reserved.