1

我需要处理来自一组流的数据,独立于其他流对每个流应用相同的处理。

我已经见过像storm这样的框架,但它似乎只允许处理静态流(即来自twitter的推文),而我需要分别处理来自每个用户的数据。

我的意思的一个简单例子可能是一个系统,每个用户都可以跟踪他的 gps 位置并实时查看平均速度、加速度、燃烧卡路里等统计数据。当然,每个用户都有自己的流,系统应该分别处理每个用户的流,就好像每个用户都有自己的专用拓扑处理他的数据一样。

有没有办法通过像storm、spark streaming或samza这样的框架来实现这一点?

如果支持 python 那就更好了,因为我已经有很多我想重用的代码。

非常感谢您的帮助

4

3 回答 3

0

使用 Storm,如果您的元组中有用户 ID,您可以使用字段分组连接模式对数据进行分组。这可确保数据按用户 ID 进行分区,从而获得逻辑子流。您的代码只需要能够处理多个组/子流,因为单个螺栓实例会获得多个组进行处理。但 Storm 肯定支持您的用例。它还可以运行 Python 代码。

于 2015-06-17T09:35:45.937 回答
0

在 Samza 中,与 Storm 类似,可以根据某个用户 ID 对各个流进行分区。这将保证同一处理器将看到某个特定用户的所有事件(以及分区函数 [例如哈希] 分配给该处理器的其他用户 ID)。但是,您的描述听起来更有可能在客户端系统上运行,而不是服务器端操作。

已经为 Samza提出了非 JVM 语言支持,但尚未实现。

于 2015-07-14T04:12:33.533 回答
0

您可以使用WSO2 流处理器来实现这一点。您可以按用户名对输入流进行分区,并分别处理与每个用户相关的事件。处理逻辑必须用Siddhi QL编写,这是一种类似 SQL 的语言。

WSO2 SP 也有一个python 包装器,它将允许您执行管理任务,例如提交、编辑作业。但是您不能使用 python 代码编写处理逻辑。

于 2018-05-02T12:39:50.727 回答