HADOOP mapreduce 中关于 WritableComparable WritableComparator RawComparator的作用。

zou781 2017-02-06 03:54:56
现在在学习hadoop(自学)。看的速度很慢,也不是很全面。遇到了一个问题。在看网上的例子的时候关于mapreduce 的二次排序。就是
1 3
2 1
3 2
1 1
1 5
2 6
6 1
5 3
7 8
6 2
5 1 这样的一组数据,排序完了是

1 1
1 3
1 5
2 1
。。。。。。
这种的。(相信你们都写过)


自己写的自定义KEY实现了WritableComparable ,在里边写一个内部类实现WritableComparator 。写完了也不明白
WritableComparable 里边的compare什么时候调用,WritableComparator 里边的compare什么时候调用。就像下面这样。

这是IntWritable源码。

排序和分组是先排序还是先分组呢。排序调用的那个方法,分组调用的哪个方法。

...全文
731 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_26517369 2017-11-09
  • 打赏
  • 举报
回复
我也是这种情况 各种懵逼啊
java8964 2017-02-15
  • 打赏
  • 举报
回复
Partitioner is for 分组. WritableComparable is for 排序. compareTo is used for sort Java object (Deserialized format), but 内部类实现WritableComparator of compare method is used to sort serialized data. If you implement it, then Hadoop knows that the objects to compare can be compared directly, without deserializing it. That's one the method comes with byte[], bytes array for the serialization format. This is just a optimization of Hadoop sorting.
  • 打赏
  • 举报
回复
为何邀请我?我真的不会这方面的。不过帮顶

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧