Apache Storm Trident .each()函数说明

时间:2015-11-26 10:40:46

标签: apache-storm trident

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="chartProfileOutput"></div>

我不理解方法.each()的签名。以下是我的理解。如果我错了,请纠正我,并为我的知识提供更多信息。

。每个()

  • 第一个参数将相关键的字段作为 从spout发出的值并从getOutputFields()返回 喷口中的方法。我仍然不知道为什么使用该参数 为。
  • 第二个参数是扩展BaseFunction的类。它 处理元组。
  • 第三个参数理解类似于第一个参数。

1 个答案:

答案 0 :(得分:3)

第一个参数是输入元组的投影。在您的示例中,只有名为“sentence”的字段提供给Split。如果您的来源使用架构Fields("first", "sentence", "third")发出元组,则只能访问Split中的“句子”。此外,“句子”在Split中的索引为零(而不是一个)。注意它不是输出上的投影 - 所有字段都将保留在输出元组中!这只是Split内整个元组的有限视图。

最后一个参数是Valueemit()的{​​{1}}架构。此字段名称作为新属性附加到输出元组。因此,输出元组的模式是输入元组的模式(原始模式,不是由第一个参数投影)加上最后一个参数的字段。

请参阅文档中的“功能”部分:https://storm.apache.org/releases/0.10.0/Trident-API-Overview.html