如何使用mapreduce在hadoop集群上实现自适应mergesort

fcipmucu  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(440)

我想在hadoop多节点集群上实现自适应合并排序,以减少运行时间。但就我所做的研究而言,Map本身就是分类和分组的。我的意思是Map输出是reduce的输入,我们得到的Map输出是排序的(如果我没有错的话)。那么如何实现自适应合并排序呢?我是说有可能吗?

ryevplcw

ryevplcw1#

在map-reduce程序中,如果您想对map输出应用on排序逻辑,以便reducer以某种排序顺序获取数据,则需要执行以下操作
选择复合密钥
设置排序比较器类
设置分组比较器类
设置分区类
例如,如果您有如下数据集
用户ID、应用程序ID、日期时间
如果要根据userid和datetime对行进行排序
首先,您需要创建一个由userid和datetime组成的复合键类
其次,您需要编写排序比较器类,在该类中您需要编写排序逻辑
第三,您需要编写分组比较器类,在该类中,您希望根据其中一个键(而不是两个键)比较键的值,就像在本例中,我们只希望使用userid对记录进行分组。
第四,您需要创建分区类,在该类中您需要编写逻辑来将相同用户id的数据发送到相同的reducer。
最后,您需要设置作业示例下的所有类

job.setSortComparatorClass(YourSortComparator.class);
job.setGroupingComparatorClass(YourGroupingComparator.class);
job.setPartitionerClass(YourPartitioner.class);

相关问题