文档章节

第四课. qq 推荐 好友

 小南风
发布于 2016/11/22 17:15
字数 337
阅读 12
收藏 0

1.导入数据,以  tab 为分割

hadoop    hello
hdfs    world
tom    cat
cat    dog
hello    world
hello    hdfs

上传文件

2. 写代码

mapper

package com.bjsxt.mr;

import java.io.IOException;
import java.io.InterruptedIOException;
import java.util.StringTokenizer;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class Test2Mapper extends  Mapper<LongWritable, Text, Text, Text>{
	// 23  9:31 视频
	
	protected  void  map(LongWritable key ,Text value,Context context) throws IOException, InterruptedException {
	  //	throws IOException , InterruptedIOException
		String line =value.toString();
		String[]  ss=line.split("\t");
		context.write(new Text(ss[0]), new Text(ss[1]));
		context.write(new Text(ss[1]), new Text(ss[0]));
	}
	
	

}

reduce

package com.bjsxt.mr;

import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;



import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class Test2Reducer extends  Reducer<Text, Text, Text, Text>{
	
	
	protected  void  reduce(Text key ,Iterable<Text> i,Context context) throws IOException, InterruptedException{	
	
		Set<String> set=new HashSet<String>();
	   for(Text t: i){
		   set.add(t.toString());
	   }
	   if(set.size()>1){
		     for(Iterator j=set.iterator();j.hasNext();){
		    	 String name=(String) j.next();
		    	 for(Iterator k=set.iterator();k.hasNext();){
		    		 String other =(String) k.next();
		    		 if(!name.equals(other)){
		    			 context.write(new Text(name), new Text(other));
		    		 }
		    		 
		    	 }
		    	 
		     }
	   }
	
	}

}

job

package com.bjsxt.mr;


import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.Text;

public class Test2JobRunForWin7 {
	
	public static void main(String[] args) {
           
		 
			Configuration  conf=new Configuration(); 
			//windows 本地测试 hadoop程序 
			conf.set("fs.default.name", "hdfs://node1:9000"); 
			conf.set("mapred.jar", "D:\\wc.jar");
			
			
			conf.set("mapred.job.tracker", "node1:9001");
			try {
				Job job = new Job(conf);
				job.setJobName("QqSendFriend");
				job.setJarByClass(Test2JobRunForWin7.class);
				
				job.setMapperClass(Test2Mapper.class);  
				job.setReducerClass(Test2Reducer.class);
				
				job.setMapOutputKeyClass(Text.class);   //设置参数类型
				job.setMapOutputValueClass(Text.class);
				
				
			  //	job.setNumReduceTasks(tasks);  // 设置  reduce任务个数的任务
				
			    FileInputFormat.addInputPath(job, new Path("/usr/input/qq/"));
			    FileOutputFormat.setOutputPath(job, new Path("/usr/output/qq1"));
			    System.exit(job.waitForCompletion(true) ? 0 : 1);
			   
			    System.out.println("job run end");
				
			} catch (Exception e) {
				e.printStackTrace();
			}
	
	
	
	}

}

 

运行结果:

© 著作权归作者所有

共有 人打赏支持
粉丝 4
博文 162
码字总数 59007
作品 0
私信 提问
开发运营|微信营销的方式有哪些?

     微信营销的方式有哪些?想要开展微信营销,一定要先知道微信营销的方式有哪些?很多朋友都想要了解这些方式,小编搜集了一些资料,将会在本文为大家介绍~      第一招 内容为王 ...

公众开发运营官网
06/24
0
0
小程序如期而至,赶快看看有哪些好玩的小程序吧

1、如何激活微信小程序 首先,更新微信到最新版本。 你只有访问一个小程序之后,才会出现所谓的入口。打开微信,在第一个页面最上方搜索“QQ阅读”,选择搜索“朋友圈、公众号、文章等” 点击...

anda0109
2017/01/09
0
0
ShareSDK超级强大的社会化分享

主要功能: 1、支持分享到新浪微博、微信好友、微信朋友圈、QQ好友、腾迅微博、QQ空间、人人网、开心网、豆瓣、搜狐微博、网易微博、短信、邮件、打印、拷贝等,即将支持印象笔记、facebook、...

陈钢强
2013/03/26
1K
2
JEECG社区《微信小程序开发培训》视频

JEECG社区《微信小程序开发培训》视频 课 程: JEECG 微信小程序开发培训 讲 师: 周俊峰、张加强 开课时间: 2016年12月06日开课 ****************************...

Jeecg
2016/12/16
80
0
你有几个共同好友,如何查找?

类似QQ好友推荐,提示你们有几个共同好友,这个怎么算出来? 难道是先查出自己所有的好友,然后遍历好友的好友,然后计算出这些好友里面重复次数,次数是多少,就有多少个共同好友?感觉这种...

liangxiao
2012/10/28
4.1K
6

没有更多内容

加载失败,请刷新页面

加载更多

kubernetes notes

Error from server (ServerTimeout): error when creating "mysql.yaml": No API token found for service account "default", retry after the token is automatically created and added t......

kut
21分钟前
1
0
代理模式---静态代理

package com.atguigu.java; //接口的应用:代理模式---静态代理。 public class ProxyTest { public static void main(String[] args) { NetWork work = new RealServer(); ProxyServer pro......

architect刘源源
36分钟前
2
1
工作中的一些Git使用

git stash list 查看所有stash git stash apply 0 应用序号为0那个stash并且不删除它 git stash pop 0 应用序号为0那个stash并且删除删除删除它 git stash save "env" stash当前的改动并且取...

-___-
今天
1
0
C# webservice 配置总结

为了方便下次查看,把总结配置文件放这里,看的方便。 <?xml version="1.0" encoding="utf-8"?><!-- 有关如何配置 ASP.NET 应用程序的详细消息,请访问 http://go.microsoft.com/f...

轻轻的往前走
今天
0
0
SpringCloud之Eureka

Eureka简介 什么是Eureka? Eureka是一种基于rest提供服务注册和发现的产品: Eureka-Server: 用于定位服务,以实现中间层服务器的负载平衡和故障转移。 Eureka-client:用于服务间的交互,内...

lc_fly1
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部