Interface RCollectionMapReduce<VIn,KOut,VOut>

Type Parameters:
VIn - input value
KOut - output key
VOut - output value
All Superinterfaces:
RMapReduceExecutor<VIn,KOut,VOut>
All Known Implementing Classes:
RedissonCollectionMapReduce

public interface RCollectionMapReduce<VIn,KOut,VOut> extends RMapReduceExecutor<VIn,KOut,VOut>
MapReduce allows to process large amount of data stored in RSet, RList, RSetCache, RScoredSortedSet, RSortedSet and others using Mapper, Reducer and/or Collator tasks launched across Redisson Nodes.

Usage example:

   public class WordMapper implements RCollectionMapper<String, String, Integer> {

       public void map(String value, RCollector<String, Integer> collector) {
           String[] words = value.split("[^a-zA-Z]");
           for (String word : words) {
               collector.emit(word, 1);
           }
       }
       
   }
   
   public class WordReducer implements RReducer<String, Integer> {

       public Integer reduce(String reducedKey, Iterator<Integer> iter) {
           int sum = 0;
           while (iter.hasNext()) {
              Integer i = (Integer) iter.next();
              sum += i;
           }
           return sum;
       }
       
   }

   public class WordCollator implements RCollator<String, Integer, Integer> {

       public Integer collate(Map<String, Integer> resultMap) {
           int result = 0;
           for (Integer count : resultMap.values()) {
               result += count;
           }
           return result;
       }
       
   }
   
   RList<String> list = redisson.getList("myWords");
   
   Map<String, Integer> wordsCount = list.<String, Integer>mapReduce()
     .mapper(new WordMapper())
     .reducer(new WordReducer())
     .execute();

   Integer totalCount = list.<String, Integer>mapReduce()
     .mapper(new WordMapper())
     .reducer(new WordReducer())
     .execute(new WordCollator());

 
Author:
Nikita Koksharov