Hadoop 使用堆进行MapReduce排序
我试图分析社交网络数据,其中包含Hadoop 使用堆进行MapReduce排序,hadoop,mapreduce,distributed,Hadoop,Mapreduce,Distributed,我试图分析社交网络数据,其中包含追随者和追随者对。我想找到使用MapReduce拥有最多追随者的前10名用户 我用一个MapReduce步骤制作了一对userID和number\u followee 然而,有了这些数据,我不知道如何在分布式系统中对它们进行排序 我不确定如何在映射器和还原器中使用优先级队列,因为它们具有分布式数据 有人能告诉我如何使用数据结构对海量数据进行排序吗 非常感谢。如果您有格式为user\u id=number\u followers的大型输入文件,查找顶级N用户的简单地
追随者
和追随者
对。我想找到使用MapReduce拥有最多追随者的前10名用户
我用一个MapReduce步骤制作了一对userID
和number\u followee
然而,有了这些数据,我不知道如何在分布式系统中对它们进行排序
我不确定如何在映射器和还原器中使用优先级队列
,因为它们具有分布式数据
有人能告诉我如何使用数据结构对海量数据进行排序吗
非常感谢。如果您有格式为
user\u id=number\u followers
的大型输入文件,查找顶级N
用户的简单地图缩减算法是:
映射器的数量*N
行,并在其中查找前N个用户如果您有格式为
user\u id=number\u of\u followers
的大型输入文件,则查找顶级N
用户的简单map reduce算法为:
映射器的数量*N
行,并在其中查找前N个用户要按降序排序数据,需要另一个
mapreduce
作业。映射器将“关注者数量”作为键,twitter句柄作为值
class SortingMap extends Map<LongWritable, Text, LongWritable, Text> {
private Text value = new Text();
private LongWritable key = new LongWritable(0);
@Overwrite
public void map(LongWritable key, Text value, Context context) throws IOException {
String line = value.toString();
// Assuming that the input data is "TweeterId <number of follower>" separated by tab
String tokens[] = value.split(Pattern.quote("\t"));
if(tokens.length > 1) {
key.set(Long.parseLong(tokens[1]));
value.set(tokens[0]);
context.write(key, value);
}
}
}
在驱动程序类中,设置SortedComparator
job.setSortComparatorClass(DescendingOrderKeyComparator.class);
要按降序排序数据,需要另一个
mapreduce
作业。映射器将“关注者数量”作为键,twitter句柄作为值
class SortingMap extends Map<LongWritable, Text, LongWritable, Text> {
private Text value = new Text();
private LongWritable key = new LongWritable(0);
@Overwrite
public void map(LongWritable key, Text value, Context context) throws IOException {
String line = value.toString();
// Assuming that the input data is "TweeterId <number of follower>" separated by tab
String tokens[] = value.split(Pattern.quote("\t"));
if(tokens.length > 1) {
key.set(Long.parseLong(tokens[1]));
value.set(tokens[0]);
context.write(key, value);
}
}
}
在驱动程序类中,设置SortedComparator
job.setSortComparatorClass(DescendingOrderKeyComparator.class);
使用mapreduce搜索排序。这可能会有帮助:谢谢你的评论。使用mapreduce搜索排序。这可能会有帮助:谢谢你的评论。非常感谢你的帮助。非常感谢你的帮助。