private void populateCachedDistributionKeys(Object row) throws HiveException {
    for (int i = 0; i < numDistributionKeys; i++) {
      cachedKeys[0][i] = keyEval[i].evaluate(row);
    }
    if (cachedKeys[0].length > numDistributionKeys) {
      cachedKeys[0][numDistributionKeys] = null;
    }
  }
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