我希望在hadoop多项式集群上实现自适应的合并排序,这样可以减少运行时间。但据我所知,地图本身是进行排序和分组的。我的意思是,映射输出是减少的输入,我们得到的映射的输出是排序的(如果我没有错)。那么,如何实现自适应合并排序呢?我是说这有可能吗?
发布于 2017-04-01 21:52:52
在地图减少程序中,如果你想在地图输出上应用你的排序逻辑,那么还原器将按某种排序顺序得到数据,你需要做以下事情
例如,如果您有如下所示的数据集
UserID,ApplicationId,日期时间
如果您想根据userid和Datetime对行进行排序
首先,您需要创建一个由userid和datetime组成的复合键类。
其次,您需要编写排序比较器类,其中需要写入排序逻辑。
第三,您需要编写分组比较器类,在这个类中,要根据一个键(而不是两个键)比较键的值,就像在这个示例中,我们只想用userid对记录进行分组。
第四,您需要创建分区类,其中需要编写逻辑,以便将相同userid的数据发送到相同的还原器。
最后,您需要在作业实例下设置所有类。
job.setSortComparatorClass(YourSortComparator.class);
job.setGroupingComparatorClass(YourGroupingComparator.class);
job.setPartitionerClass(YourPartitioner.class);https://stackoverflow.com/questions/43125581
复制相似问题