gpt4 book ai didi

java - Hadoop的默认分组比较器?

转载 作者:行者123 更新时间:2023-12-02 22:00:48 25 4
gpt4 key购买 nike

我试图了解默认 grouping comparator在 Hadoop 的 MR 中工作。

当我们没有在驱动程序代码中指定任何关于分组的内容时 comparator , 是否使用 compareTo()键的方法(假设 Hadoop 的内置数据类型,例如 IntWritable )。

我们有自定义 key 的情况怎么样,它仍然取决于 key 的compareTo()吗?方法?

我确实在网上搜索过,但我没有得到满意的答案来解决我的疑问。任何人都可以帮助澄清这一点。

编辑

此问题与已标记的不重复;我的问题不是询问分组比较器的角色,而是询问默认实现是什么以及我们有自定义键的情况。我不确定这个问题在什么基础上被标记为另一个 SO 问题的重复,这与询问“分组比较器”的需要有关。我提到了那个问题,这与这个问题没有任何关系。

最佳答案

回答您的疑问

... does it use compareTo() method of the key ....



是的,但它的 compare()来自以下实现的方法
public static class Comparator extends WritableComparator
{
public Comparator() {
super();
}


public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2)
{
int thisValue = readInt(b1, s1);
int thatValue = readInt(b2, s2);
return thisValue == thatValue ? 0 : thisValue < thatValue ? -1 : 1;
}
}

How about the situations in which we have custom key, does it still depend on key's compare() method?



是的,如果您想优化,可以使用默认实现。

sample writable类型可能看起来像
public class MyWritable extends WritableComparator {

public MyWritable() {
super();
}

@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
// Custom code
}


}

来自 doc ,这是一个优化钩子(Hook)。这意味着,此方法默认实现,但它应该用于优化或自定义代码。

enter image description here

请注意还有一个 compare(WritableComparable a, WritableComparable b) , 如果您使用 WritableComparator(Class<? extends WritableComparable> keyClass)用于实现。

关于java - Hadoop的默认分组比较器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49274570/

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