Apache storm ApacheStorm Trident.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

我想在项目中使用ApacheStorm的TridentTopology。我发现很难理解storm.trident.Stream类中的.each()函数。以下是其教程中给出的示例代码,以供参考:

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()
      值的模式。此字段名称作为新属性附加到输出元组。因此,输出元组的模式是输入元组的模式(原始的,不是由第一个参数投影的)加上最后一个参数的字段

      请参阅文档中的“功能”部分: