gpt4 book ai didi

hadoop - 了解 hadoop 中的自定义分区程序

转载 作者:可可西里 更新时间:2023-11-01 14:44:54 27 4
gpt4 key购买 nike

我现在正在学习分区器的概念。谁能给我解释一下下面的代码。我很难理解



public class TaggedJoiningPartitioner extends Partitioner
    
      {
     

@覆盖
public int getPartition(TaggedKey taggedKey, Text text, int numPartitions) {
返回 taggedKey.getJoinKey().hashCode() % numPartitions;
}
}

这个 taggedKey.getJoinKey().hashCode() % numPartitions 如何确定为一个键执行哪个 reducer?

有人能给我解释一下吗?

最佳答案

一旦你把事情分解一点,它并不像你想象的那么复杂。

taggedKey.getJoinKey().hashCode() 将简单地返回一个整数。每个对象都有一个 hashCode() 函数,它只返回一个数字,希望该数字对于该对象本身是唯一的。如果愿意,您可以查看 TaggedKey 的源代码以了解它是如何工作的,但您只需要知道它会根据对象的内容返回一个整数。

% 运算符执行模除法,这是您在执行除法后返回余数的地方。 (8 % 3 = 2、15 % 7 = 1,等等)。

假设您有 3 个分区程序 (numPartitions = 3)。每次用 3 进行模数除法时,无论传递的是什么数字,都会得到 0、1 或 2。这用于确定 3 个分区器中的哪一个将获取数据。

分区器的整体思想是您可以使用它们对要排序的数据进行分组。如果您想按月排序,您可以将带有字符串“January”的每条数据传递给第一个分区,将“December”传递给第 12 个分区程序,等等。但在您的情况下,它在外面看起来有点困惑。但实际上他们只是想(希望)均匀地分布数据,所以他们使用简单的散列/模数函数来随机选择分区。

关于hadoop - 了解 hadoop 中的自定义分区程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18356037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com