2016-02-20 3 views
1

Когда агрегирование в GroupBy применяется на любой трубке, в полученных полях есть группа группировки &. Я хочу все поля в дополнение к агрегированной стоимости в КаскадныеLoop-in on GroupBy - Агрегация в каскадировании

Пример: вход:

 A|a1|b1|12 
     B|b2|c2|10 
     A|a3|a3|5 

Нормальный Агрегированный Выход:

A|17 
B|10 

Я хочу: выход же в качестве входных данных, но в дополнении агрегированных колонок, как well--

A|a1|b1|12|17 
B|b2|c2|10 
A|a3|a3|5|17 

Итак, как петля на результате GroupBy агрегировать & печатать все строки в каскадном?

Pipe group = new GroupBy(someTuplePipe, groupKey, true); 
    group = new Every(g1, Fields.ALL, new Count(new Fields("sum")), Fields.ALL); 

ответ

2

Лучший способом я нашел, чтобы создать собственный Buffer и использовать список, чтобы сохранить входящий TupleEntry вычислить сумму и записать сумму перебирая предыдущего сохраненного список

@Override 
public void operate(FlowProcess flowProcess, BufferCall bufferCall) { 
    Iterator<TupleEntry> iterator = bufferCall.getArgumentsIterator(); 
    List<TupleEntry> tupleEntryMap = new ArrayList<TupleEntry>(); 

    int sum = 0; 
    while (iterator.hasNext()) { 
     TupleEntry inputEntry = new TupleEntry(iterator.next()); 
     sum += inputEntry.getInteger("amount_field"); 
     tupleEntryMap.add(inputEntry); 
    } 

    for (TupleEntry result : tupleEntryMap) { 
     result.setInteger("amount_field", sum); 
     bufferCall.getOutputCollector().add(result); 
    } 
} 

И Используйте его, как вы упомянули выше.

Pipe group = new GroupBy(someTuplePipe, groupKey, true); 
group = new Every(group, new CustomBuffer(), Fields.REPLACE); 
+0

Это не то же самое, что и группировка, а затем объединение сгруппированного потока с входным потоком? – ganeshTripathi

+0

@ganeshtripathi Не могли бы вы рассказать подробнее. Я с трудом понимаю вас. – riteshakya037

+0

@ganeshtripathi Наконец понял, что вы пытались сказать: D. Да, выход будет таким же, как вы упомянули, но он добавит по меньшей мере 2 дополнительных шага к потоку. – riteshakya037

 Смежные вопросы

  • Нет связанных вопросов^_^