博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MapReduce进行本地的单词统计
阅读量:5291 次
发布时间:2019-06-14

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

1、处理输入文本为<k,v>对,继承Mapper方法

package com.cr.hdfs;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;public class map extends Mapper
{ /** * WordCountMapper 处理文本为
对 * @param key 每一行字节数的偏移量 * @param value 每一行的文本 * @param context 上下文 * @throws IOException * @throws InterruptedException */ @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { Text keyOut = new Text(); IntWritable valueout = new IntWritable(); String[] arr = value.toString().split(" "); for(String s : arr){ keyOut.set(s); valueout.set(1); context.write(keyOut,valueout); } }}

2、对Mapper的输入进行reduce操作,继承reducer方法

package com.cr.hdfs;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;public class reduce extends Reducer
{ @Override protected void reduce(Text key, Iterable
values, Context context) throws IOException, InterruptedException { int count = 0; for(IntWritable iw : values){ count += iw.get(); } context.write(key,new IntWritable(count)); }}

3、wordcountApp

package com.cr.hdfs;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;import java.io.IOException;/** * wordcount单词统计 */public class wordcount {    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {        //单例作业        Configuration conf = new Configuration();//        conf.set("fs.defaultFS","file:///");        Job job = Job.getInstance(conf);        //设置job的各种属性        job.setJobName("wordcountAPP");                 //设置job名称        job.setJarByClass(wordcount.class);              //设置搜索类//        job.setInputFormatClass(org.apache.hadoop.mapreduce.lib.input.TextInputFormat.class);  //设置输入格式        FileInputFormat.addInputPath(job, new Path(args[0])); //添加输入路径        FileOutputFormat.setOutputPath(job,new Path(args[1]));//设置输出路径        job.setInputFormatClass(org.apache.hadoop.mapreduce.lib.input.TextInputFormat.class);        job.setMapperClass(map.class);                   //设置mapper类        job.setReducerClass(reduce.class);               //设置reduecer类        job.setNumReduceTasks(1);                         //设置reduce个数        job.setMapOutputKeyClass(Text.class);            //设置之map输出key        job.setMapOutputValueClass(IntWritable.class);   //设置map输出value        job.setOutputKeyClass(Text.class);               //设置mapreduce 输出key        job.setOutputValueClass(IntWritable.class);      //设置mapreduce输出value        job.waitForCompletion(true);    }}

4、设置参数输入路径和输出路径

5、运行结果

转载于:https://www.cnblogs.com/flyingcr/p/10326994.html

你可能感兴趣的文章
javascript中的面向对象(一)
查看>>
Android计算器界面 TableLayout
查看>>
【软件工程】敏捷开发方法的总结
查看>>
路由器原理及作用以及交换机
查看>>
主流PC浏览器调研
查看>>
Linux权限管理 - 基本权限
查看>>
C语言初学 简单计算器计算加减乘除程序
查看>>
smali语法小结
查看>>
[python]-类的继承
查看>>
pkg-config 设置
查看>>
选择之后,不能再选择。分配之后,不能再分配
查看>>
修复Kaos的中文显示
查看>>
自学it18大数据笔记-第三阶段Spark-day03——会持续更新……
查看>>
HBase总结
查看>>
xcode 快捷键
查看>>
STM32 CubeMX 中如何查看系统时钟
查看>>
C# 操作excel
查看>>
IT不同子领域的必读书单
查看>>
6.22
查看>>
(Nginx+Apache)实现反向代理与负载均衡
查看>>