我需要处理来自一组流的数据,将相同的详细信息应用于独立于其他流的每个流。
我已经看过像storm这样的框架,但它似乎只允许处理静态流(即tweet形成twitter),而我需要分别处理来自每个用户的数据。
我的意思的一个简单例子可能是一个系统,每个用户可以跟踪他的GPS位置,并实时查看平均速度,加速度,燃烧卡路里等统计数据。当然,每个用户都有自己的流,系统应该分别处理每个用户的流,就像每个用户都有自己的专用拓扑处理他的数据一样。
有没有办法通过风暴,火花流或samza等框架实现这一目标?
如果支持python会更好,因为我已经有很多我想重用的代码。
非常感谢您的帮助
答案 0 :(得分:0)
使用Storm,如果您的元组中有用户ID,则可以使用字段分组连接模式对数据进行分组。这可以确保数据按用户标识进行分区,从而获得逻辑子流。您的代码只需要能够处理多个组/子流,因为单个bolt实例会获得多个组进行处理。但Storm确实支持您的用例。它也可以运行Python代码。
答案 1 :(得分:0)
在Samza中,类似于Storm,可以在某个用户ID上对各个流进行分区。这将保证相同的处理器将看到某个特定用户的所有事件(以及分区函数[例如散列]分配给该处理器的其他用户ID)。然而,您的描述听起来更像是在客户端系统上运行而不是服务器端操作。
Samza的非JVM语言支持proposed,但尚未实现。
答案 2 :(得分:0)
您可以使用WSO2 Stream Processor来实现此目的。您可以按用户名对输入流进行分区,并分别处理与每个用户相关的事件。处理逻辑必须用Siddhi QL编写,这是一种类似SQL的语言。
WSO2 SP也有python wrapper,它允许您执行管理任务,例如提交,编辑作业。但是你不能使用python代码编写处理逻辑。