Here is the solution. For counts add a column to the AvroObject and set it to 1 before applying the reduction.
def red: Reduction[AvroObject] = Reduction((row1: AvroObject, row2: AvroObject) => {
val field4Sum = row1.getField4+ row2.getField4
val field5Sum = row1.getField5+ row2.getField5
val count = row1.getCountField + row2.getCountField
row1.setField4(field4Sum )
row1.setField5(field5Sum )
row1.setCountField(count)
row1
})
val summary = DList[AvroObject] groupBy { row => (row.getField1, row.getField2, row.getField3) }.combine(red)
Thanks,
Raghu