博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有趣的面试题
阅读量:6251 次
发布时间:2019-06-22

本文共 4066 字,大约阅读时间需要 13 分钟。


 

MR找共同朋友,数据格式如下:

 

A B C D E FB A C D EC A B ED A B EE A B C DF A

 

第一字母表示本人,其他是他的朋友,找出有共同朋友的人,和共同朋友是谁

 

1 import java.io.IOException; 2 import java.util.Set; 3 import java.util.StringTokenizer; 4 import java.util.TreeSet; 5  6 import org.apache.hadoop.conf.Configuration; 7 import org.apache.hadoop.fs.Path; 8 import org.apache.hadoop.io.Text; 9 import org.apache.hadoop.mapreduce.Job;10 import org.apache.hadoop.mapreduce.Mapper;11 import org.apache.hadoop.mapreduce.Reducer;12 import org.apache.hadoop.mapreduce.Mapper.Context;13 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;14 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;15 import org.apache.hadoop.util.GenericOptionsParser;16 17 public class FindFriend {18         19           public static class ChangeMapper extends Mapper
{ 20 @Override21 public void map(Object key, Text value, Context context) throws IOException, InterruptedException {22 StringTokenizer itr = new StringTokenizer(value.toString());23 Text owner = new Text();24 Set
set = new TreeSet
();25 owner.set(itr.nextToken());26 while (itr.hasMoreTokens()) {27 set.add(itr.nextToken());28 } 29 String[] friends = new String[set.size()];30 friends = set.toArray(friends);31 32 for(int i=0;i
{ 42 public void reduce(Text key, Iterable
values, 43 Context context) throws IOException, InterruptedException {44 String commonfriends =""; 45 for (Text val : values) {46 if(commonfriends == ""){47 commonfriends = val.toString();48 }else{49 commonfriends = commonfriends+":"+val.toString();50 }51 }52 context.write(key, new Text(commonfriends)); 53 } 54 }55 56 57 public static void main(String[] args) throws IOException,58 InterruptedException, ClassNotFoundException {59 60 Configuration conf = new Configuration();61 String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();62 if (otherArgs.length < 2) {63 System.err.println("args error");64 System.exit(2);65 }66 Job job = new Job(conf, "word count");67 job.setJarByClass(FindFriend.class);68 job.setMapperClass(ChangeMapper.class);69 job.setCombinerClass(FindReducer.class);70 job.setReducerClass(FindReducer.class);71 job.setOutputKeyClass(Text.class);72 job.setOutputValueClass(Text.class);73 for (int i = 0; i < otherArgs.length - 1; ++i) {74 FileInputFormat.addInputPath(job, new Path(otherArgs[i]));75 }76 FileOutputFormat.setOutputPath(job,77 new Path(otherArgs[otherArgs.length - 1]));78 System.exit(job.waitForCompletion(true) ? 0 : 1);79 80 }81 82 }

运行结果:

 

AB      E:C:DAC      E:BAD      B:EAE      C:B:DBC      A:EBD      A:EBE      C:D:ABF      ACD      E:A:BCE      A:BCF      ADE      B:ADF      AEF      A

 


转自:http://www.aboutyun.com/thread-11107-1-1.html


 

转载于:https://www.cnblogs.com/admln/p/Interesting-interview-topic.html

你可能感兴趣的文章
【转自ITPUB】SYNONYM关于underlying table权限的小小发现
查看>>
halcon图像合并(贴图到指定位置)
查看>>
stark组件(2):提取公共视图函数、URL分发和设置别名
查看>>
android——使用Interceptor设置缓存来给服务器减负
查看>>
样式独立性的解决方案
查看>>
刷leetcode是什么样的体验?【转】
查看>>
linux内核数据结构之kfifo【转】
查看>>
c++学习笔记(新手学习笔记,如有错误请与作者联系)
查看>>
java集合复制和反转
查看>>
记录openlaw的反爬
查看>>
Matlab数据转化至python端,并写入数据库
查看>>
json字符串与json对象的相互转换
查看>>
APM最佳实践:Web 2.0和AJAX四大优化战略
查看>>
Java优先队列一些问题
查看>>
percona-toolkit 工具集安装
查看>>
mooc-IDEA 项目/文件之间跳转--002
查看>>
iOS的项目目录结构
查看>>
064:ORM查询条件详解-in和关联模型查询
查看>>
实现不在栈中产生对象
查看>>
申请企业级IDP、真机调试、游戏接入GameCenter 指南、游戏接入OpenFeint指南
查看>>