使用DRPC和Trident构建实时计数查询拓扑
在实时数据处理中,我们常常需要对数据进行计数并持久化存储,同时能够方便地查询这些计数结果。本文将介绍如何使用Storm的Trident和DRPC功能来实现这一目标,包括创建DRPC流、应用DRPC状态查询以及使用DRPC客户端进行查询,还会探讨Trident操作如何映射到Storm原语以及如何扩展Trident拓扑。
1. 通过DRPC访问持久化计数
在之前的处理中,我们已经得到了按艺术家、标题和标签的计数结果,并将其存储在TridentState对象中。现在,我们希望能够通过外部应用程序查询这些状态对象,以构建所需的报告。为了实现这一目的,我们将使用分布式远程过程调用(DRPC)。
以下是按艺术家和标签进行计数的代码示例:
TridentState countsByArtist =
playStream
.project(new Fields("title"))
.groupBy(new Fields("title"))
.persistentAggregate(new MemoryMapState.Factory(),
new Count(),
new Fields("title-count"));
TridentState countsByTag =
playStream
.each(new Fields("tags"),
new ListSplitter(),
超级会员免费看
订阅专栏 解锁全文
10

被折叠的 条评论
为什么被折叠?



