0

此处Storm 文档指出: CombinerAggregator 返回单个元组,其中包含单个字段作为输出。

我应该怎么做才能从Combiner函数返回一个包含多个字段的元组?

我正在创建一个聚合函数,并希望从输入元组聚合两个或多个值并将这两个或多个字段作为输出发送。

我还想在输出中有一些输入元组的字段。如何使用组合器功能来获得所需的输出?

输入元组到组合器聚合器函数:

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

所需的输出元组:

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

过去,我尝试在init()CombinerAggregator 方法中从元组的字段中创建一个模型,并将其从CombinerAggregator 作为输出返回。但我觉得这不是正确的解决方案。功能是否chainedAgg()适用于这种情况?

任何帮助将不胜感激。

4

1 回答 1

0

我想你可能想使用更通用的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);
}

聚合器可以发出具有任意数量字段的任意数量的元组。

于 2019-04-04T11:22:59.300 回答