Obtuve el resultado que creo que querías usando lo siguiente:
GroupBy groupBy = GroupBy.key("a", "b", "c")
.initialDocument("{ total: 0 }")
.reduceFunction("function(obj, result) { " +
" result.a = obj.a; " +
" result.b = obj.b; " +
" result.c = obj.c; " +
" result.total += obj.total; " +
"}");
Tenga en cuenta que lo que debe hacer es decirle a la función de reducción qué poner en los campos a, b y c, así como en el campo total.
Esto me dio una salida sin procesar de:
{ "a" : 10.0 , "b" : 20.0 , "c" : 30.0 , "total" : 300.0}
Dado que no ha incluido la clase Agrupada, no estoy seguro de si esto se corresponde exactamente con el objeto que deseaba, pero podría indicarle la dirección correcta.