如何使用mapreduce在hadoop聚类上实现自适应合并

时间:2017-03-30 18:21:04

标签: sorting hadoop dictionary merge reduce

我想在hadoop多节点群集上实现自适应合并排序,以便缩短运行时间。但到目前为止,我研究地图确实进行了排序和分组。我的意思是地图输出是reduce的输入,我们得到的地图输出是排序的(如果我没有错)。那么我该如何实现自适应合并排序呢?我的意思是有可能吗?

1 个答案:

答案 0 :(得分:0)

在map reduce程序中,如果你想在地图输出上应用你的排序逻辑,以便reducer将按照某种排序顺序获取数据,你需要做以下事情

  1. 选择您的复合键
  2. 设置排序比较器类
  3. 设置分组比较器类
  4. 设置分区类
  5. 例如,如果您有如下所示的数据集

    用户ID,的applicationID,日期时间

    如果您想根据userid和Datetime

    对行进行排序

    首先,您需要创建一个由userid和datetime

    组成的复合键类

    其次,您需要编写排序比较器类,您需要在其中编写排序逻辑

    第三,您需要编写分组比较器类,在该类中,您希望根据其中一个键而不是基于两个键来比较键的值,就像在此示例中我们只想将记录与userid分组。

    第四,您需要创建分区类,您需要编写逻辑以将同一用户标识的数据发送到同一个reducer。

    最后,您需要在作业实例

    下设置所有类
    job.setSortComparatorClass(YourSortComparator.class);
    job.setGroupingComparatorClass(YourGroupingComparator.class);
    job.setPartitionerClass(YourPartitioner.class);