保留风暴中鲸鱼喷水的特定id的变量值/状态

时间:2016-03-15 08:27:31

标签: r apache-storm

我已经定义了一个计算特定阈值的螺栓。螺栓正在接收几个字段值的数据。是否有可能保留特定字段值的变量值/状态。

假设我有两组元组输入s $ tuple $ input:

s$id = "21343254545454354343"            s$id="45645465645456561234"
s$tuple$input = ["ABC",2]                s$tuple$input= ["CDE",5]

是否可以为“ABC”保留变量的值,例如counter = 5,为“CDE”保留counter = 9,并且仅在收到相应id的元组时更新它们。

1 个答案:

答案 0 :(得分:2)

我还没有玩过Storm和R,但希望这些想法与Java类似。

您可以选择存储状态:

  • 在工人记忆中(每个螺栓)
  • 外部商店(不在Storm内)

您选择的内容取决于您的要求,但我们假设您只是在尝试计算单词并且在工作人员死亡时并不在乎。为此,实施很简单。只需在螺栓中创建一个私有变量并跟踪。

例如,假设您有一个计数变量:

Integer count = counts.get(word);
if (count == null)
   count = 0;
count++;
counts.put(word, count);

然后,在你的螺栓执行方法中,你只需要检查你之前是否已经得到了这个词,如果这样增加了计数:

{{1}}

来源:https://oldsite.com

您还想考虑元组如何流向工人。您可能不想再使用随机播放分组了。相反,您希望按ID 进行字段分组,以便具有相同ID的元组转到同一个螺栓。

前进你可能想要一些更持久的东西(所以如果你失去了一个工人,那么你就不会失去所有的计数),所以你可能会把你的计数存放在像HBase这样的东西上。