static <R, S, P extends Message, Q extends Message, T extends Message> AggregateRequest
    validateArgAndGetPB(Scan scan, ColumnInterpreter<R, S, P, Q, T> ci, boolean canFamilyBeAbsent,
      boolean supportPartialResults) throws IOException {
    validateParameters(scan, canFamilyBeAbsent);
    final AggregateRequest.Builder requestBuilder = AggregateRequest.newBuilder();
    requestBuilder.setInterpreterClassName(ci.getClass().getCanonicalName());
    P columnInterpreterSpecificData = ci.getRequestData();
    if (columnInterpreterSpecificData != null) {
      requestBuilder.setInterpreterSpecificBytes(columnInterpreterSpecificData.toByteString());
    }
    requestBuilder.setScan(ProtobufUtil.toScan(scan));
    requestBuilder.setClientSupportsPartialResult(supportPartialResults);
    return requestBuilder.build();
  }
@param scan              the HBase scan object to use to read data from HBase
@param canFamilyBeAbsent whether column family can be absent in familyMap of scan
hbase-endpoint/src/main/java/org/apache/hadoop/hbase/client/coprocessor/AggregationHelper.java