protected void reduceMultiValue(final KEY key, final Iterator<VALUE> iter, final VALUE firstValue, final Context context)
throws IOException, InterruptedException {
String group = null;
try {
group = getGroup(key, firstValue);
final SchemaElementDefinition elementDef = schema.getElement(group);
if (elementDef.isAggregate()) {
Properties state;
final ElementAggregator aggregator = elementDef.getIngestAggregator();
state = getValueProperties(key, firstValue, group);
while (iter.hasNext()) {
state = aggregator.apply(state, getValueProperties(key, iter.next(), group));
}
context.write(key, createValue(key, firstValue, state, group));
} else {
context.write(key, firstValue);
while (iter.hasNext()) {
context.write(key, iter.next());
}
}
} catch (final Exception e) {
if (null == group) {
group = "UNKNOWN";
}
throw new RuntimeException("Failed to reduce values for group: " + group, e);
}
}