如何从combiner/reducer/aggregator函数返回包含多个字段的元组?

wmvff8tz  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(342)

storm文档说明:combineraggregator返回一个元组,其中一个字段作为输出。
我应该怎么做才能从combiner函数返回一个包含多个字段的元组?
我正在创建一个聚合函数,希望聚合输入元组中的两个或多个值,并将这两个或多个字段作为输出发送。
我还想在输出中有一些输入元组的字段。如何使用合并器函数获得所需的输出?
组合器聚合器函数的输入元组: ("a", "b", "c" , "d") 所需的输出元组: ("a", "b", "newValue1", "newValue2", "newValue3") 在过去,我尝试在 init() 从元组的字段返回combineraggerator并将其作为输出返回的方法。但我觉得这不是正确的解决办法。做 chainedAgg() 函数在这种情况下运行良好吗?
任何帮助都将不胜感激。

puruo6ea

puruo6ea1#

我想你应该用更一般的 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);
}

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

相关问题