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