编写MapReduce程序,实现WordCount
一、在集群创好文件夹,并上传好相应的文件
输入hdfs dfs直接回车即可出现操作提示
(1)创建目录
hdfs dfs -mkdir /wordcount
(2)创建文件input和output目录
hdfs dfs mkdir /wordcount/input
hdfs dfs mkdir /wordcount/output
(3)上传本地TXT文件到集群
hdfs dfs -put text1.txt /wordcount/input
二、打开eclipse编写MR程序代码
不知道如何接入集群的同学可以参照博客,将eclipse接入hadoop:https://blog.csdn.net/qq_38741971/article/details/88876815
(1)新建map工程
(2)编写Mapper类型
package demo;import java.io.IOException;
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;/*** map阶段<KEYIN, VALUEIN, KEYOUT, VALUEOUT> ---> <K1, V1, K2, V2>* 分析:text1.txt* hello world --><k1,v1>=<0,"hello world">--><k2,v2>==<"hello",1>,<"world",1>* hello hadoop --><k1,v1>=<11,"hello hadoop">--><k2,v2>==<"hello",1>,<"hadoop",1>*/
public class WordMapper extends Mapper<LongWritable,Text,Text,IntWritable> {Text word = new Text();IntWritable one = new IntWritable(1);/*** map函数:处理行,有几行就处理几行,上述案例会调用两次*/@Overrideprotected void map(LongWritable key, Text value,Context context)throws IOException, InterruptedException {//将每行数据按空格分割开StringTokenizer itr = new StringTokenizer(value.toString()," ");while (itr.hasMoreElements()) {word.set(itr.nextToken());context.write(word, one);}}
}
(3)编写Reduce类型
package demo;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
/*** reduce阶段:<KEYIN, VALUEIN, KEYOUT, VALUEOUT>==<k2,v2,k3,v3>==<Text, IntWritable, Text, IntWritable>* 分析:reduce接收来自map阶段输出数据<k2,v2>=<"hello",1>,进到reduce函数后,数据变成如下内容:* <"hello",[1,1]>,<"world",[1]>....(shuffle阶段)重点知识**/
public class WordReduce extends Reducer<Text, IntWritable, Text, IntWritable>{IntWritable result = new IntWritable();@Overrideprotected void reduce(Text k2, Iterable<IntWritable> v2,Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable v : v2) {sum = sum + v.get();}result.set(sum);context.write(k2, result);}}
(4)编写Driver类型
package demo;import java.io.IOException;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;/*** Driver 驱动类* **/
public class WordCount {public static void main(String[] args) {try {Configuration conf = new Configuration();System.setProperty("HADOOP_USER_NAME", "dodo");Job job = Job.getInstance(conf);job.setJobName("max air");//创建job作业,需要conf,给作业命名"word count"//设置通过一个类的全路径,加载寻找相应的jar包job.setJarByClass(WordCount.class);//设置job所需的mapper类job.setMapperClass(WordMapper.class);//job.setCombinerClass(cls);//设置job所需的reducer类job.setReducerClass(WordReduce.class);//设置job作业的输出类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);//为MR的job添加数据输入路径FileInputFormat.addInputPath(job, new Path("hdfs://192.168.81.128:9000/wordcount/input/text*.txt"));//为MR的job设置数据输出路径FileOutputFormat.setOutputPath(job, new Path("hdfs://192.168.81.128:9000/wordcount/output/out"));//提交job到集群,并且等待完成try {System.exit(job.waitForCompletion(true)?1:0);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}} catch (IOException e) {e.printStackTrace();}}
}
如果想从window本地读取文件,同时跑完MR程序,文件落到window可以如下设置
(5)运行,执行成功出现下图
未成功执行的同学可以参照博客,将eclipse接入hadoop,并解决并且避免一些excption:https://blog.csdn.net/qq_38741971/article/details/88876815
编写MapReduce程序,实现WordCount相关推荐
- 超详细MapReduce程序实现WordCount案例
一.案例准备 1.首先在本地创建两个文件,即文件A和文件B touch A B 2.在文件A和文件B中分别添加以下内容 A: China is my motherland I love China B ...
- 如何在Hadoop上编写MapReduce程序
1. 概述 1970年,IBM的研究员E.F.Codd博士在刊物<Communication of the ACM>上发表了一篇名为"A Relational Model of ...
- 我的第一个MapReduce程序(WordCount)
万事开头难!长途从第一步开始!MapReduce编程也一样! 下面是本人编写的第一个MapReduce程序以及个人的一些理解! 准备条件: 1.安装hadoop 2.工具:eclipse(已经安装了h ...
- 【Hadoop】伪分布式安装---MapReduce程序运行到YARN上,编写MapReduce程序---HDFS yarn
在我的虚拟机(Linux)上安装的Hadoop是2.7.3版本的,安装过程可以参考这个网站,也可以下载. http://hadoop.apache.org/docs/r2.7.6/hadoop-pro ...
- hadoop jar包_Hadoop学习之路(5)Mapreduce程序完成wordcount
程序使用的测试文本数据: Dear RiverDear River Bear Spark Car Dear Car Bear CarDear Car River Car Spark Spark Dea ...
- 编写MapReduce程序计算平均分
计算某小学学生的期末考试成绩的平均分 文章目录 一.准备数据 1.学生的三科成绩 二.编写程序 1.完整代码 2.启动Hadoop 3.上传3个txt文件 4.在eclipse中运行 5.查看最终结果 ...
- 编写MapReduce程序,统计每个买家收藏商品数量,实现统计排序功能
实验材料及说明 在Ubuntu系统的/学号(每个人用自己的学号)/salesInfo目录下,有买家的购买记录文件Sales,该文件记录了买家的id,购买商品的id以及购买日期,文件为名为Sales.S ...
- python hadoop wordcount_Hadoop之wordcount实例-MapReduce程序
实验目的 利用搭建好的大数据平台 Hadoop,对 HDFS 中的文本文件进行处理,采用 Hadoop Steaming 方式,使用 Python 语言实现英文单词的统计功能,并输出单词统计结果. 实 ...
- Hadoop详解(三)——MapReduce原理和执行过程,远程Debug,Writable序列化接口,MapReduce程序编写
MapReduce概述 MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题. MR由两个阶段组成:Map和Reduce,用户只需要实现map()和Re ...
- hadoop的python框架指南_Python之——用Mrjob框架编写Hadoop MapReduce程序(基于Hadoop 2.5.2)...
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79056120 一.环境准备想了解如何使用原生Python编写MapReduce程序 ...
最新文章
- SIGPIPE导致cronttab和shell脚本等工作异常
- operator did not match Pytorch‘s Interpolation until opset 11
- python写一个类方法_Python基础|类方法的强制重写与禁止重写
- gerrit的使用和配置
- 什么是python编程例子_案例详解:优化Python编程的4个妙招
- 火线妹在线求偶,想找高质量男朋,粉丝:有没有绯闻心里没数?
- java拾遗录(一)
- oracle某些服务在有其他服务,oracle 监听无法启动,出现某些服务再未由其他服务或程序使用时自动停止。...
- java小编程----电话号码组合
- apache Storm学习之二-基本概念介绍
- python图片分类毕业设计成果报告书_毕业设计成果报告书模板.doc
- c语言long的格式字符串,时间字符串和long类型之间的转换
- 富勒wms系统里的定时器id_仓储、运输配送供应链管理系统解决方案以及应用领域区别...
- 坚果pro2刷回官方_锤子坚果Pro2刷魔趣、刷回官方踩坑记
- 8. 无线体内纳米网:基于蓝牙LE接口的数字ID系统
- python点击按钮后跳到另一个页面_js点击button按钮跳转到另一个新页面
- 大韩航空如何成为一流航空——等级文化与称呼的改变
- CUDA安装教程及调试:本机win10+vs2013+NVIDIA GeForce GTX 1050Ti
- dsoframer-在线编辑office文档,一款开源的由微软提供
- vmware加速方法总结
热门文章
- 编程题目:PAT 1006. 换个格式输出整数 (15)
- Team Project 设想 -- 基于用户信息的学术搜索
- Class的三种构造方法
- 拓端tecdat|R语言GJR-GARCH和GARCH波动率预测普尔指数时间序列和Mincer Zarnowitz回归、DM检验、JB检验
- 拓端tecdat:Python集成学习:自己编写构建AdaBoost分类模型可视化决策边界及sklearn包调用比较
- 操作系统 生产者消费者问题解释
- 操作系统数据结构知识点总结1
- 珍爱网html模板,python爬虫基础实战:爬取珍爱网征婚女士信息,爬取Discuz论坛发帖和回帖代码案例...
- 【Python】@ 操作符
- hyperparameter_hunter 超参数优化模块实践