java—在这种情况下,如何为hadoop编写partioner?

7lrncoxx  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(329)

我有一个类似“signature[white space]date[white space]time”的密钥,但我希望所有具有相同签名的密钥都在同一个bin中。在这种情况下,如何写一份党报?
致以最诚挚的问候,

omhiaaxx

omhiaaxx1#

默认情况下,使用hashparitioner,并使用整个hashcode来计算reducer数。为了完成您的任务,您只能散列部分密钥(在您的情况下是签名),并且具有相同签名的所有密钥将被分配给相同的缩减器。
请尝试以下代码:

public class HashPartitioner<K, V> extends Partitioner<K, V> {

   public int getPartition(K key, V value,int numReduceTasks) {

      return key.toString().split("\s+")[0].hashCode() % numReduceTasks;
   }
}

相关问题