Apache storm ApacheStorm Trident.each()函数说明
我想在项目中使用ApacheStorm的TridentTopology。我发现很难理解storm.trident.Stream类中的.each()函数。以下是其教程中给出的示例代码,以供参考:Apache storm ApacheStorm Trident.each()函数说明,apache-storm,trident,Apache Storm,Trident,我想在项目中使用ApacheStorm的TridentTopology。我发现很难理解storm.trident.Stream类中的.each()函数。以下是其教程中给出的示例代码,以供参考: TridentTopology topology = new TridentTopology(); TridentState wordCounts = topology.newStream("spout1", spout) .each(new Fields("sen
TridentTopology topology = new TridentTopology();
TridentState wordCounts =
topology.newStream("spout1", spout)
.each(new Fields("sentence"), new Split(), new Fields("word"))
.groupBy(new Fields("word"))
.persistentAggregate(new MemoryMapState.Factory(), new Count(), new Fields("count"))
.parallelismHint(6);
我不理解方法的签名。each()。以下是我的理解。如果我错了,请纠正我,并提供更多信息以供我参考
.each()
- 第一个参数获取字段,这些字段是与 从喷口发出的值和从getOutputFields()返回的值 方法在喷口中。我还是不知道为什么要用这个参数 因为
- 第二个参数是扩展BaseFunction的类。信息技术 处理元组
- 第三个参数的理解与第一个参数类似
- 第一个参数是输入元组上的投影。在您的示例中,仅将中名为“句子”的字段提供给
Split
。如果源代码发出带有模式字段的元组(“第一”、“句子”、“第三”)
则只能在拆分中访问“句子”。此外,“句子”在Split
中的索引为零(而不是一)。请注意,它不是输出上的投影——所有字段都将保留在输出元组中!这只是Split
中整个元组的有限视图
最后一个参数是Split
中指定给emit()
的值的模式。此字段名称作为新属性附加到输出元组。因此,输出元组的模式是输入元组的模式(原始的,不是由第一个参数投影的)加上最后一个参数的字段
请参阅文档中的“功能”部分: