用于帮助挖掘排行榜分数流的开源工具

数据挖掘 工具 数据流挖掘
2021-09-28 04:26:55

考虑一个包含表示在线游戏中用户分数的元组的流。 (user, new_score)流每秒可能有 100-1,000 个新元素。该游戏拥有 200K 到 300K 的独立玩家。

我想有一些常设的查询,例如:

  1. 哪些玩家在一小时的滑动窗口中发布了超过 x 个分数
  2. 哪些玩家在一小时的滑动窗口中获得了 x% 的分数

我的问题是我可以使用哪些开源工具来启动这个项目?我现在正在考虑埃斯珀

注意:我刚刚读完“挖掘数据流”(挖掘海量数据集的第 4 章),我对挖掘数据流还很陌生。

2个回答

这不是一个完整的解决方案,但您可能希望将OrientDB作为您堆栈的一部分。Orient 是一个完全用 Java 编写的图形文档数据库服务器。

在图形数据库中,关系被认为是一等公民,因此可以很快地遍历这些关系。Orient 也是一个文档数据库,它允许您使用听起来像您需要的那种无模式架构。然而,我推荐 Orient 的真正原因是它的可扩展性。它支持通过套接字进行流式传输,并且整个数据库可以嵌入到另一个应用程序中。最后,它可以有效地扩展和/或可以完全通过内存工作。因此,凭借一些 Java 专业知识,您实际上可以针对内存中的数据库运行预设查询。

我们正在做类似的事情。在为社会科学研究合作创建应用程序/网站时,我们发现自己拥有极其复杂的数据模型。我们最终使用 Gremlin Traversal Language(Groovy 的一个子集,它的核心当然是 Java)编写了几个查询,然后通过 OrientDB 的二进制连接服务器公开这些查询。因此,客户端打开一个 TCP 套接字,发送一个简短的二进制消息,并在 Java 中直接针对内存数据库执行查询。

OrientDB 还支持用 Javascript 编写函数查询,您可以使用 Node.js 直接与 Orient 实例交互。

对于这种规模的东西,我想将 Orient 与 Hadoop 或类似的东西结合使用。您还可以将 Orient 与 esper 结合使用。

考虑:东方简介:http ://www.sitepoint.com/a-look-at-orientdb-the-graph-document-nosql/

复杂的实时查询:http ://www.gft-blog.com/business-trends/leveraging-real-time-scoring-through-bigdata-to-detect-insurance-fraud/

关于 java 和 orient 的流式处理选项的讨论:https ://github.com/orientechnologies/orientdb/issues/1227

我最近阅读了一篇非常好的文章,该文章建议使用Twitter Storm来完成与您的任务非常相似的任务。