Partitioner

  partitioner 是map中的数据映射到不同的reduce时的根据。一般情况下,partitioner会根据数据的key来把数据平均分配给不同的reduce,同时保证相同的key分发到同一个reduce。但当一个数据不平衡时,即某个key对应的数据量太大,导致reduce的空间不够,或者计算耗费太多时间时,可以重写partitioner,来按照实际情况分发数据。

下面是一个partitioner的例子,很简单,不多说了。

 

	public static class TestPartitioner<K, V> extends Partitioner<K, V> { 

		
		  /** Use {@link Object#hashCode()} to partition. */ 
		  public int getPartition(K key, V value, 
		                          int numReduceTasks) { 
		    return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks; 
//			数据均传给第一个reduce
//			return 0;
		  } 

	} 

  

posted on 2016-01-21 14:11  BruceLv  阅读(345)  评论(0编辑  收藏  举报

导航