gpt4 book ai didi

java - Hadoop MapReduce : using MapWritable as a key

转载 作者:行者123 更新时间:2023-12-01 14:09:33 26 4
gpt4 key购买 nike

我想传递一个Map<String, String>从我的映射器到 reducer 。

所以我想要的元组是:<(Sorted)MapWritable,IntWritable>

目前,这个可怜人的序列化避免了这一点:我创建了一个简单的 Text使用 Guava -s MapJoiner 和 MapSplitter 类的对象,生成 String然后可用于初始化 Text对象来写。因此,我在字符串中传输键值对,然后将其拆分回来。

但我想放弃这个黑客。

我知道如果 mapred.output.key.comparator没有设置,那么使用的键类必须实现WritableComparable 。问题是,MapWritable 和 SortedMapWritable 缺少这个接口(interface)。

我检查了WritableComparable接口(interface),但我有点困惑,因为你必须重新发明读写方法(序列化),而不仅仅是 compareTo() .

所以我的问题是:你能帮我找到一个有效的示例、代码、指南或任何有值(value)的信息吗?提前致谢。

最佳答案

您可以扩展MapWritable(或SortedMapWritable)并实现WritableComparable。您不需要重写读写方法,因为 MapWritable(或 SortedMapWritable)已经为您完成了这些工作。例如,

public class MyMapWritable extends MapWritable implements
WritableComparable<MyMapWritable> {

@Override
public int compareTo(MyMapWritable o) {
// Implement your compare logic
return 0;
}
}

public class MySortedWritable extends SortedMapWritable implements
WritableComparable<MySortedWritable> {

@Override
public int compareTo(MySortedWritable o) {
// Implement your compare logic
return 0;
}
}

关于java - Hadoop MapReduce : using MapWritable as a key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633644/

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