我已经定义了一个计算特定阈值的螺栓。螺栓正在接收几个字段值的数据。是否有可能保留特定字段值的变量值/状态。
假设我有两组元组输入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的元组时更新它们。
答案 0 :(得分:2)
我还没有玩过Storm和R,但希望这些想法与Java类似。
您可以选择存储状态:
您选择的内容取决于您的要求,但我们假设您只是在尝试计算单词并且在工作人员死亡时并不在乎。为此,实施很简单。只需在螺栓中创建一个私有变量并跟踪。
例如,假设您有一个计数变量:
Integer count = counts.get(word);
if (count == null)
count = 0;
count++;
counts.put(word, count);
然后,在你的螺栓执行方法中,你只需要检查你之前是否已经得到了这个词,如果这样增加了计数:
{{1}}
您还想考虑元组如何流向工人。您可能不想再使用随机播放分组了。相反,您希望按ID 进行字段分组,以便具有相同ID的元组转到同一个螺栓。
前进你可能想要一些更持久的东西(所以如果你失去了一个工人,那么你就不会失去所有的计数),所以你可能会把你的计数存放在像HBase这样的东西上。