gpt4 book ai didi

hadoop - RawComparator 的意义是什么以及我们在什么情况下使用它

转载 作者:可可西里 更新时间:2023-11-01 15:31:19 25 4
gpt4 key购买 nike

什么是RawComparator及其意义?

每个 mapreduce 程序都必须使用 RawComparator 吗?

最佳答案

RawComparator 直接操作对象的字节表示

不是强制在每个 map reduce 程序中使用它

MapReduce 本质上是一个批处理系统,而不是适用于交互式分析。您无法运行查询并在几秒或更短时间内获得结果。查询通常需要几分钟或更长时间,因此最适合离线使用,因为没有人坐在处理循环中等待结果。

如果您仍然想优化 Map Reduce Job 所花费的时间,那么您必须使用 RawComparator。

RawComparator 的使用:

中间键值对已经从 Mapper 传递到 Reducer。在这些值从 Mapper 到达 Reducer 之前,将执行洗牌和排序步骤。

排序得到改进,因为 RawComparator 将按字节比较键。如果我们不使用 RawComparator,则必须完全反序列化中间键才能执行比较。

示例:

public class IndexPairComparator extends WritableComparator {
protected IndexPairComparator() {
super(IndexPair.class);
}

@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
int i1 = readInt(b1, s1);
int i2 = readInt(b2, s2);

int comp = (i1 < i2) ? -1 : (i1 == i2) ? 0 : 1;
if(0 != comp)
return comp;

int j1 = readInt(b1, s1+4);
int j2 = readInt(b2, s2+4);
comp = (j1 < j2) ? -1 : (j1 == j2) ? 0 : 1;

return comp;
}
}

在上面的例子中,我们没有直接实现 RawComparator。相反,我们扩展了 WritableComparator,它在内部实现了 RawComparator。

引用这个RawComparator文章了解更多详情。

关于hadoop - RawComparator 的意义是什么以及我们在什么情况下使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32329320/

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