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的過程!內存

相關文章
相關標籤/搜索