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
    • Method Detail

      • timeout

        RMapReduce<KIn,​VIn,​KOut,​VOut> timeout​(long timeout,
                                                                TimeUnit unit)
        Defines timeout for MapReduce process. 0 means infinity timeout.
        Parameters:
        timeout - for process
        unit - of timeout
        Returns:
        self instance