1. package org.slp;
  2.  
  3. import org.apache.hadoop.io.LongWritable;
  4. import org.apache.hadoop.io.Text;
  5. import org.apache.hadoop.mapreduce.Mapper;
  6.  
  7. import java.io.IOException;
  8. import java.util.StringTokenizer;
  9.  
  10. /**
  11. * Created by sanglp on 2017/7/17.
  12. */
  13. public class Test2Mapper extends Mapper<LongWritable ,Text,Text,Text> {
  14. @Override
  15. protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
  16. //super.map(key, value, context);
  17. String line = value.toString();//一行数据代表一组好友关系
  18. String[] ss = line.split("\t");
  19. context.write(new Text(ss[0]),new Text(ss[1]));//主从分成两行输出
  20. context.write(new Text(ss[1]),new Text(ss[0]));
  21.  
  22. }
  23. }
  1. package org.slp;
  2.  
  3. import org.apache.hadoop.io.Text;
  4. import org.apache.hadoop.mapreduce.Reducer;
  5.  
  6. import java.io.IOException;
  7. import java.util.HashSet;
  8. import java.util.Iterator;
  9. import java.util.Set;
  10.  
  11. /**
  12. * Created by sanglp on 2017/7/17.
  13. */
  14. public class Test2Reduce extends Reducer<Text,Text,Text,Text> {
  15. @Override
  16. protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
  17. //super.reduce(key, values, context);
  18. Set<String> set = new HashSet<String>();
  19. for(Text t :values ){
  20. set.add(t.toString());
  21. }
  22. if (set.size()>1){
  23. for(Iterator j = set.iterator();j.hasNext();){
  24. String name = (String)j.next();
  25. for(Iterator k = set.iterator();k.hasNext();){
  26. String other = (String)k.next();
  27. if(!name.equals(other)){
  28. context.write(new Text(name),new Text(other));
  29. }
  30. }
  31. }
  32. }
  33. }
  34. }
  1. package org.slp;
  2.  
  3. import org.apache.hadoop.conf.Configuration;
  4. import org.apache.hadoop.fs.Path;
  5. import org.apache.hadoop.io.IntWritable;
  6. import org.apache.hadoop.io.Text;
  7. import org.apache.hadoop.mapreduce.Job;
  8. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  9. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  10.  
  11. import java.io.IOException;
  12.  
  13. /**
  14. * Created by sanglp on 2017/7/17.
  15. */
  16. public class JobRun2 {
  17.  
  18. public static void main(String[] args){
  19. Configuration conf = new Configuration();
  20. conf.set("mapred.job.tracker","node1:9001");
  21. conf.set("mapred.job.tracker","node1:9001");
  22. conf.set("mapred.jar","C:\\Users\\sanglp\\qq.jar");
  23. try {
  24. Job job = new Job(conf);
  25. job.setJobName("qq");
  26. job.setJarByClass(JobRun2.class);
  27. job.setMapperClass(Test2Mapper.class);
  28. job.setReducerClass(Test2Reduce.class);
  29. job.setMapOutputKeyClass(Text.class);
  30. job.setMapOutputValueClass(Text.class);
  31.  
  32. job.setNumReduceTasks(1);//设置reduce任务的个数
  33. //mapreduce输入数据所在目录或文件
  34. FileInputFormat.addInputPath(job,new Path("/usr/input/qq"));
  35. //mr执行之后的输出数据的目录
  36. FileOutputFormat.setOutputPath(job,new Path("/usr/out/qq"));
  37. try {
  38. System.exit(job.waitForCompletion(true)?0:1);
  39. } catch (InterruptedException e) {
  40. e.printStackTrace();
  41. } catch (ClassNotFoundException e) {
  42. e.printStackTrace();
  43. }
  44. } catch (IOException e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. }

文件内容例如:

小明  小李

小花  小白

【大数据系列】MapReduce示例好友推荐的更多相关文章

  1. 大数据学习——mapreduce共同好友

    数据 commonfriends.txt A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A,E,F,L E:B,C,D,M,L F:A,B,C,D,E,O,M G:A,C,D ...

  2. 大数据系列之分布式计算批处理引擎MapReduce实践-排序

    清明刚过,该来学习点新的知识点了. 上次说到关于MapReduce对于文本中词频的统计使用WordCount.如果还有同学不熟悉的可以参考博文大数据系列之分布式计算批处理引擎MapReduce实践. ...

  3. 大数据系列4:Yarn以及MapReduce 2

    系列文章: 大数据系列:一文初识Hdfs 大数据系列2:Hdfs的读写操作 大数据谢列3:Hdfs的HA实现 通过前文,我们对Hdfs的已经有了一定的了解,本文将继续之前的内容,介绍Yarn与Yarn ...

  4. 大数据系列之分布式计算批处理引擎MapReduce实践

    关于MR的工作原理不做过多叙述,本文将对MapReduce的实例WordCount(单词计数程序)做实践,从而理解MapReduce的工作机制. WordCount: 1.应用场景,在大量文件中存储了 ...

  5. 大数据系列之并行计算引擎Spark介绍

    相关博文:大数据系列之并行计算引擎Spark部署及应用 Spark: Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎. Spark是UC Berkeley AMP lab ( ...

  6. 大数据系列(2)——Hadoop集群坏境CentOS安装

    前言 前面我们主要分析了搭建Hadoop集群所需要准备的内容和一些提前规划好的项,本篇我们主要来分析如何安装CentOS操作系统,以及一些基础的设置,闲言少叙,我们进入本篇的正题. 技术准备 VMwa ...

  7. 大数据系列之数据仓库Hive命令使用及JDBC连接

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  8. 大数据系列(5)——Hadoop集群MYSQL的安装

    前言 有一段时间没写文章了,最近事情挺多的,现在咱们回归正题,经过前面四篇文章的介绍,已经通过VMware安装了Hadoop的集群环境,相关的两款软件VSFTP和SecureCRT也已经正常安装了. ...

  9. 大数据系列(4)——Hadoop集群VSFTP和SecureCRT安装配置

    前言 经过前三篇文章的介绍,已经通过VMware安装了Hadoop的集群环境,当然,我相信安装的过程肯定遇到或多或少的问题,这些都需要自己解决,解决的过程就是学习的过程,本篇的来介绍几个Hadoop环 ...

随机推荐

  1. 高性能分布式哈希表FastDHT

    高性能分布式哈希表FastDHT介绍及安装配置 FastDHT-高效分布式Hash系统 FastDHT(分布式hash系统)安装和与FastDFS整合实现自定义文件ID Centos6.3 停安装 F ...

  2. 【经验之谈】Git使用之TortoiseGit配置VS详解;国内几大Git代码托管网站

    转载自: http://www.cnblogs.com/xishuai/p/3590705.html   http://www.cnblogs.com/shanyou/p/3662482.html

  3. java项目中的路径获取,request

    java web项目中获取项目根路径(tomcat可运行的web源码的路径)的方式: 分为两种情况: 情况一: 在eclipse.inde等开发工具中获取(注:如下代码所在的类必须是控制层所在包下的类 ...

  4. iOS: 控制UIView的外形

    #import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h> @interface UIView (Shape) - (v ...

  5. 【WP8】Uri关联启动第三方App

    在WP8中支持启动第三方应用程序,比如在App1中可以打开App2,你可以在你的应用程序中直接打开QQ,也可以让其他开发者调用你的APP,例如:软件盒子 下面演示被调用方和调用方的使用方法,新建两个项 ...

  6. java的final关键字——修饰变量

    final修饰的变量不可变,指的是引用不可变,(除基本类型)而不是内容. final修饰的成员变量必须被初始化

  7. python操作mysql数据库实现增删改查

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: ...

  8. Tomcat 8

    JDTCompiler.java /** * Compile the jsp file from the current engine context. As an side- effect, * t ...

  9. Linux+Redis实战教程_day02_Linux系统上安装MySQL

    Linux系统上安装MySQL 安装MySQL 卸载自带mysql 查询mysql的安装情况,可以直接使用了 rpm -qa | grep -i mysql –-color 卸载原生的MySQL rp ...

  10. 品鉴同事发来的炸金花的PHP程序代码

    今天同事发来了一个炸金花的PHP程序,这个代码实现了两个人通过各自的三张牌进行权重计算,得到分数进行比较得到谁的牌大,我觉得里面还有一些问题,代码如下: <?php /** 每张牌的分值为一个2 ...