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