风暴三叉戟'合并'保留时间顺序的功能

时间:2013-11-06 12:31:07

标签: apache-storm trident

说我有两个流:

Stream 1: [1,3],[2,4]
Stream 2: [2,5],[3,2]

定期合并会产生一个Stream 3,如下所示:

[1,3],[2,4],[2,5],[3,2]

我想合并流,同时保留其中的顺序 发出了元组,因此如果在时间1发出[2,5],则发出[1,3] 时间2,时间3 [3,2]和时间4 [2,4],结果流将 是:

[2,5],[1,3],[3,2],[2,4]

有没有办法做到这一点,如果是这样,怎么样?一些示例代码将是 感谢我,因为我是一个完整的三叉戟新秀,最近被推动了 进入基于三叉戟的项目。

先谢谢你的帮助,

1 个答案:

答案 0 :(得分:1)

您必须使用三叉戟持久性来使用外部数据存储。我想,排序的redis应该符合你的目的。

更多信息

如果您浏览此https://github.com/nathanmarz/storm/wiki/Trident-tutorial,您可以了解如何使用memcache作为单词计数的存储。

同样,您可以在Redis上编写流备份(如果您不熟悉redis试用, http://redis.io/commands#sorted_set)。我认为redis排序集将作为您案例的目的。

如果您想要数据的持久存储,您可以考虑使用其他NOSQL解决方案,例如mongo,然后您可以随时轻松索引最终数据。这将很容易提供您想要的排序功能。而且还没有人写过mongo三叉戟,https://github.com/sjoerdmulder/trident-mongodb

如果您仍然感到困惑,请告诉我。