文档章节

第四课. qq 推荐 好友

 小南风
发布于 2016/11/22 17:15
字数 337
阅读 10
收藏 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
JEECG社区《微信小程序开发培训》视频

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

Jeecg
2016/12/16
80
0
小程序如期而至,赶快看看有哪些好玩的小程序吧

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

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

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

陈钢强
2013/03/26
1K
2
你有几个共同好友,如何查找?

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

liangxiao
2012/10/28
4.1K
6

没有更多内容

加载失败,请刷新页面

加载更多

造谣造到t-io老巢了

只发当事人的截图,不发表评论,以免有引导嫌疑 PS1:截图是由不同的人发过来的 PS2:本人已经不在此微信群 PS3:图3是2018-09-23的t-io官方群的一个发言小统计,有助于让人认识到他们的其中...

talent-tan
22分钟前
31
0
heartbeat 资源

drbd+apache+heartbeat : http://blog.51cto.com/11838039/1827901 heartbeat双机热备的架设 : http://blog.51cto.com/11838039/1827560 对heaetbeat的深一步认识 : http://blog.51cto.co......

寰宇01
56分钟前
3
0
Spring 转换 model 为 json 时增加属性

缘起 目前的项目中有个需求是在附件对象转换成 json 时增加个 url 属性,以前的方式是在返回附件对象或列表时候做一次统一处理,这次想看看 spring 或者 jackson fasterxml 是否自带类似功能...

郁也风
今天
3
0
10大PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的 10个开源的Php比特币项目,将有助于你了解在自己的应用中 如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方...

汇智网教程
今天
3
0
springclould feign客户端添加全局参数

用springclould feign作为调用服务的客户端,一般来说参数可以写在feignclient的方法参数里 有时需要所有feign请求都统一添加一些参数,例如token用于鉴权等,可以这样做: 添加一个配置类,...

canneljls
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部