Interface RMapReduce<KIn,VIn,KOut,VOut>

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

public interface RMapReduce<KIn,VIn,KOut,VOut> extends RMapReduceExecutor<VIn,KOut,VOut>
MapReduce allows to process large amount of data stored in Redis map using Mapper, Reducer and/or Collator tasks launched across Redisson Nodes.

Usage example:

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

       public void map(String key, 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;
       }
       
   }
   
   RMap<String, String> map = redisson.getMap("myWords");
   
   Map<String, Integer> wordsCount = map.<String, Integer>mapReduce()
     .mapper(new WordMapper())
     .reducer(new WordReducer())
     .execute();

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

 
Author:
Nikita Koksharov