假设我有两条流:
Stream 1: [1,3],[2,4]
Stream 2: [2,5],[3,2]
常规合并将生成流3,如下所示:
[1,3],[2,4],[2,5],[3,2]
我想合并流,同时保持元组发出的顺序,所以如果 [2,5]
在第一次发射时, [1,3]
在第二次发射时, [3,2]
在时间3和 [2,4]
在时间4,产生的流将是:
[2,5],[1,3],[3,2],[2,4]
有没有办法做到这一点,如果有,怎么做?一些示例代码将不胜感激,因为我是一个完整的三叉戟新手谁最近被推入一个三叉戟为基础的项目。
谢谢你的帮助,
伊莱
1条答案
按热度按时间dzjeubhm1#
必须使用trident persistent的外部数据存储。我想,一套分类的redis应该能满足你的需要。
更多信息
如果你经历了这一切https://github.com/nathanmarz/storm/wiki/trident-tutorial,您可以了解如何使用memcache作为字数计数的存储。
同样,你也可以在redis上写一个流备份(如果你不熟悉redis,试试看,http://redis.io/commands#sorted_set). 我认为redis排序集可以作为你的一个目的。
如果您想要数据的持久性存储,您可以考虑使用其他nosql解决方案,如mongo,然后您可以随时轻松地索引您的最终数据。这将很容易提供您想要的排序功能。不是有人写过蒙哥三叉戟,https://github.com/sjoerdmulder/trident-mongodb.
让我知道如果你仍然困惑和什么。