storm trident 分布式查询遇到的一个问题

在学习storm trident的时候,遇到一个问题;java

背景是一个很简单的场景,从一个文档中读取句子,而后算出每一个单词出现的次数,将结果存入MyMemoryMapState中。分布式

而后作一个分布式查询:ide

topology.newDRPCStream("word", drpc)//默认输入的fields 是"args"
  .stateQuery(wordCounts, new Fields("args"), new MapGet(), new Fields("count"));

drpc调用的代码学习

drpc.execute("word", "first")

结果出现有时候查询是null,有时候会有数据。比较奇怪,既然内存中已经有了数据,为何查不出呢?code

后来尝试修改了分布式查询代码orm

topology.newDRPCStream("word", drpc)//默认输入的fields 是"args"
  .groupBy(new Fields("args"))
  .stateQuery(wordCounts, new Fields("args"), new MapGet(), new Fields("count"));

而后每次都能查询出结果。不明白为何非要groupby 一下。须要了解一下stateQuery的过程!内存

相关文章
相关标签/搜索