Как я могу вернуть кортеж с несколькими полями из функции Combiner / Reducer / Aggregator? - PullRequest
0 голосов
/ 04 апреля 2019

Здесь Документация шторма гласит: CombinerAggregator возвращает один кортеж с одним полем в качестве вывода.

Что я должен сделать, чтобы вернуть кортеж с несколькими полями из функции Combiner?

Я создаю статистическую функцию и хочу агрегировать два или более значений из входного кортежа и отправить эти два или более полей в качестве вывода.

Я также хочу иметь некоторые поля входного кортежа в выходных данных. Как я могу использовать функцию Combiner для получения требуемого вывода?

Функция входного кортежа для объединителя:

("a", "b", "c" , "d")

Обязательный выходной кортеж:

("a", "b", "newValue1", "newValue2", "newValue3")

Раньше я пытался создать модель в методе init() CombinerAggregator из полей кортежа и возвращать ее из CombinerAggregator в качестве вывода. Но я не чувствую, что это правильное решение. Работает ли функция chainedAgg() в такой ситуации?

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 апреля 2019

Я думаю, что вы, вероятно, хотите использовать более общий интерфейс Aggregator.

Из ссылки, которую вы разместили:

Наиболее общий интерфейс для выполнения агрегации - это Aggregator, которыйвыглядит следующим образом:

public interface Aggregator<T> extends Operation {
    T init(Object batchId, TridentCollector collector);
    void aggregate(T state, TridentTuple tuple, TridentCollector collector);
    void complete(T state, TridentCollector collector);
}

Агрегаторы могут генерировать любое количество кортежей с любым количеством полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...