public <R, S, P extends Message, Q extends Message, T extends Message> R median(
    final TableName tableName, ColumnInterpreter<R, S, P, Q, T> ci, Scan scan) throws Throwable {
    try (Table table = getConnection().getTable(tableName)) {
      return median(table, ci, scan);
    }
  }
This is the client side interface/handler for calling the median method for a given cf-cq
combination. This method collects the necessary parameters to compute the median and returns
the median.
@param tableName the name of the table to scan
@param ci        the user's ColumnInterpreter implementation
@param scan      the HBase scan object to use to read data from HBase
@return R the median
@throws Throwable The caller is supposed to handle the exception as they are thrown &amp;
                  propagated to it.
hbase-endpoint/src/main/java/org/apache/hadoop/hbase/client/coprocessor/AggregationClient.java