我想将一个Map<String, String>
从我的映射器传递给减速器。
所以我想要的元组是:<(Sorted)MapWritable,IntWritable>
目前,这被穷人的序列化所躲避:我Text
使用 Guava -s MapJoiner 和 MapSplitter 类创建了一个简单的对象,它们生成String
的然后可用于初始化Text
要写入的对象。所以我在一个字符串中传输键值对,然后将其拆分回来。
但我想放弃这个黑客。
我知道如果mapred.output.key.comparator
没有设置,那么使用的密钥类必须实现WritableComparable
。问题是,MapWritable 和 SortedMapWritable 缺少这个接口。
我检查了WritableComparable
接口,但我有点困惑,因为你必须重新发明读写方法(序列化),而不仅仅是compareTo()
.
所以我的问题是:你能帮我找到一个有效的例子、代码、指南或任何有价值的信息吗?提前致谢。