private int computeBucketNumber(Object row, int numBuckets)
          throws HiveException, SerDeException {
    Object[] bucketFieldValues = new Object[bucketEval.length];
    for (int i = 0; i < bucketEval.length; i++) {
      bucketFieldValues[i] = bucketEval[i].evaluate(row);
    }
    return ObjectInspectorUtils.getBucketNumber(bucketHashFunc.applyAsInt(bucketFieldValues), numBuckets);
  }
Initializes array of ExprNodeEvaluator. Adds Union field for distinct
column indices for group by.
Puts the return values into a StructObjectInspector with output column
names.

If distinctColIndices is empty, the object inspector is same as
{@link Operator#initEvaluatorsAndReturnStruct(ExprNodeEvaluator[], List, ObjectInspector)}
ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java