使用mapreduce实现wordcount

使用MapReduce实现WordCount 1、MapReduce 开发流程 搭建开发环境,参考HDFS 环境搭建,基本一致 基于MapReduce 框架编写代码 编译打包,将源代码和依赖jar 包打成一个包 上传至运行环境 运行hadoop jar 命令,现已由yarn jar 替代,建议使用新命令提交执行 具体提交命令为: yarn jar testhdfs-jar-with-dependencies.jar com.tia... 阅读详情

一、map

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;

public class MR extends Mapper<LongWritable, Text, Text, IntWritable>{

private Text word = new Text(); 

@Override
protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context)
throws IOException, InterruptedException {

StringTokenizer str = new StringTokenizer(value.toString());
while(str.hasMoreTokens()) {
word.set(str.nextToken());
context.write(word, new IntWritable(1));

}

}
}

二、Reduce

import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;


public class RE extends Reducer<Text, IntWritable, Text, IntWritable>{


       @Override
protected void reduce(Text keys, Iterable<IntWritable> values,
Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {
   
int sum = 0;
for(IntWritable val:values) {
sum += val.get();

}
// result.set(sum);
context.write(keys, new IntWritable(sum));

}

}

三、主程序

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;
public class Runner {


public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
 
Configuration conf = new Configuration();  
       Job job = Job.getInstance(conf);  
         
       //重要:指定本job所在的jar包  
       job.setJarByClass(Runner.class);  
         
       //设置wordCountJob所用的mapper逻辑类为哪个类  
       job.setMapperClass(MR.class);  
       //设置wordCountJob所用的reducer逻辑类为哪个类  
       job.setReducerClass(RE.class);  
         
       //设置map阶段输出的kv数据类型  
       job.setMapOutputKeyClass(Text.class);  
       job.setMapOutputValueClass(IntWritable.class);  
         
       //设置最终输出的kv数据类型  
       job.setOutputKeyClass(Text.class);  
       job.setOutputValueClass(IntWritable.class);  
         
       //设置要处理的文本数据所存放的路径  
      
       FileInputFormat.setInputPaths(job, new Path("hdfs://172.16.169.10:9000/wordcount/srcdata/"));  
       FileOutputFormat.setOutputPath(job, new Path("hdfs://172.16.169.10:9000/wordcount/output/"));  
         
       //提交job给hadoop集群  
       job.waitForCompletion(true);  

}

}

四、将maven项目在eclipse打成jar包

上传到集群的本地文件系统即可

五、hadoop jar命令运行jar包


六、查看结果


七、问题总结

1、当我写完三个java类的时候发现maven项目M字母下方有个感叹号:这个问题一般是maven库中的jar包异常引起的。为了查看那些jar包异常,我们可以通过Window-》Show View-》Problems查看当前maven项目的问题列表:其中或提示jar包有问题。只要将j本地库中的jar包删除后更新项目即可。可能有多个包存在问题,需要重复上述步骤。

2、hadoop jar命令

hadoop jar   【本地jar包绝对路径】 【指出主类】【hdfs上输入map的文件的路径】【结果输出路径(hdfs上的路径)】

八、加入combiner

只需要在主程序Runner中加入代码:

job.setCombinerClass(IntSumReduce.class);//这里使用reduce做为combiner,也可自定义



使用hadoop的MapReduce来实现WordCount 首先依次在终端输入命令 sudo service ssh restart重启ssh服务。 start-dfs.sh启动HDFS, start-yarn.sh启动yarn。 然后输入jps命令查看进程 输入vi article.data创建article.data并进入文件,按i键进行内容编辑模式,输入this is an example回车this is another exampl... 阅读详情

相关推荐

MapReduce之Wordcount实现

Hadoop搭建 MapReduce之Wordcount代码实现 代码讲解,通俗易懂。

MapReduce单元测验参考

MapReduce单元测验 1单选(2分) 下列说法错误的是 2单选(2分) 在使用MapReduce程序WordCount进行词频统计时,对于文本行“hello hadoop hello world”,经过WordCount程序的Map函数处理后直接输出的中间结果,应该是下面哪种形式: 3单选(2分) 对于文本行“hello hadoop hello world”,经过WordCount的Re...

weixin_43258896的博客 3978

mapreduce wc单词计数 自定义分区 自定义排序实现

实现mr的wordcount功能和自定义分区的功能、自定义排序功能;com.ellis.mr1为类似wc功能,com.ellis.mr2为自定义分区功能,com.ellis.mr3为自定义排序功能

MapReduce学习4-1:排序

1 排序分类2 相关接口3 比较器的自定义与配置3.1 Text类的自定义比较器3.2 比较器获取与配置 在MapRedece的Shuffle过程中存在排序,例如溢出前的快速排序、磁盘上的归并排序,该过程是自动进行的。无论reduceTask还是mapTask默认是按字典顺序排序,并且默认是对key的字典顺序排序。Shuffle相关可以参考:MapReduce学习4:框架原理详解 排序的关键在于比较。以下详细介绍 1 排序分类 部分排序:MapReduce根据输入记录的键对数据集排序。保证输出的每个文件内.

qq_43967413的博客 2392

WordCount详解

WordCount是Hadoop自带的亦例程序之一,整个程序虽然简单却涵盖了 MapReduce 的最基本使用方法。一般我们学习一门程序设计语言,最开始上手的程序都是“HelloWorld”, 可以说 WordCount 就是学习掌握 Hadoop MapReduce 编程的“Hello World”。 WordCount的功能是统计输人文件(也可以是输入文件夹内的多个文件)中每个单词出现的次数。基本的解决思路也很直观,就是将输入的文件文本切分成单词,将其中相同的单词聚集在一起,统计其数量作为该单词的出现次数输出。

WSL2不能上网,Failed to connect to github.com port 443问题解决方案

WSL2不能上网: 问题:ping外网无效 例如:ping www.baidu.com失败 解决方案: 在wsl: $sudo vi /etc/wsl.conf wsl.conf: [network] generateResolvConf = false 在PowerShell: $sudo vi /etc/etc/resolv.conf resolv.conf: # This file was automatically generated by WSL. To stop automatic gen

Jason_Chen__的博客 9525

手写MapReduce实现WordCount

WordCount到底要干什么?怎么用MapReduce实现WordCount? 手写一个自己的WordCount,揭开MapReduce的神秘面纱💡

阿年的博客 1923

采用MPU6050的手势遥控器

随着社会的发展与进步,电子产品日益更新,个人家庭迎来了越来越多的智能家电。然而,现在的智能电子设备产品的遥控器多数都是按键形的。操作繁琐不直观,学习成本大。并且对于有老人小孩的家庭,给他们的操作带来了巨大的障碍。手势遥控器是指利用简单的手势来指挥电子设备,获得便捷的操作体验。让家庭成员都可以享受科技发展带来的福利。MPU6050是一个运动传感器,内置陀螺仪,再由电子设备利用判断结果做出相应的响应即...

Sakura的博客小站 6602

从wordcount 开始 mapreduce (C++\hadoop streaming模式)

序:终于开始接触hadoop了,从wordcount开始 1. 采用hadoop streamming模式 优点:支持C++ pathon shell 等多种语言,学习成本较低,不需要了解hadoop内部结构 调试方便:cat input | ./map | sort | ./reduce > output hadoop 就是提供了一个分布式平台实现了上述脚本的功能,这是一次m...

weixin_30633405的博客 164

ThreeJS教程:地图案例(包围盒、正投影)

推荐:将加入你的3D工具链。

jianshi2023的博客 1007

AI原生应用在UGC内容审核中的实战经验

AI原生应用(AI-Native Application)——以机器学习模型为核心驱动力,深度整合数据、算法、工程架构的完整系统——为破解这一三角难题提供了全新范式。全链路数据驱动:从数据采集、模型训练到决策优化,形成闭环自治系统,无需人工规则干预多模态深度理解:同时处理文本、图像、音频、视频等多类型内容,理解语义而非简单匹配特征自适应进化能力:通过人机协同反馈持续学习新型违规模式,模型周级迭代成为常态审核效率提升300%:单条视频审核耗时从2.3秒降至0.7秒。

AI算力网络与通信的博客 1149

MapReducer的基础实现(WordCount)

总的来说,这段代码创建了另一个单词计数的 MapReduce 作业,并在指定的输入路径读取数据,然后将结果输出到指定的输出路径,并且在作业执行完成后删除输出路径中的文件。总体来说,这段代码的作用是对输入文本进行简单的计数操作,输出结果是 "The num of words" 对应的值为 1,表示每个单词出现的次数。总体来说,这段代码的作用是将输入的文本数据按单词分割并进行计数,输出格式为(单词,计数)的键值对。处理后,将结果输出到指定的输出路径中,并在作业执行完成后删除输出路径中的文件。

w156236的博客 1824

几率大的网络安全面试题(含答案)

其他篇章:Java校招极大几率出的面试题(含答案)----汇总 本文面试题汇总: 防范常见的 Web 攻击 重要协议分布层 arp协议的工作原理 rip协议是什么?rip的工作原理 什么是RARP?工作原理 OSPF协议?OSPF的工作原理 TCP与UDP区别总结 什么是三次握手四次挥手? tcp为什么要三次握手? dns是什么?dns的工作原理 一次完整的HTTP请求过程 Cookies和ses...

睶 6万+

使用python实现MapReduce的wordcount实例

Hadopp的基本框架是用java实现的,而各类书籍基本也是以java为例实现mapreduce,但笔者日常工作都是用python,故此找了一些资料来用python实现mapreduce实例。 一、环境 1、Hadoop-2.7.3完全分布式搭建() 2、python3.5 二、基本思想介绍 使用python实现mapreduce调用的是Hadoop Stream,主要利用STDIN(标

lpty的博客 8763

Hyper-V虚拟交换机实战:外部/内部/专用网络配置全解析

本文全面解析Hyper-V虚拟交换机的三种核心类型:外部、内部和专用网络。详细阐述了外部交换机如何让虚拟机融入物理网络,内部交换机如何构建宿主机与虚拟机的私有通道,以及专用交换机如何实现虚拟机间的完全隔离。通过实战配置步骤、IP规划建议和OpenWRT软路由案例,帮助用户根据需求灵活部署,并特别强调了外部交换机配置中“允许管理操作系统共享此网络适配器”这一关键选项的重要性,以避免宿主机断网。

weixin_29218963的博客 543

Python与西门子PLC数据交互实战:基于Snap7的跨平台工业通信指南

本文详细介绍了如何使用Python和Snap7库实现与西门子PLC的数据交互。内容涵盖跨平台环境搭建、连接参数配置、数据读写实战及性能优化技巧,为工业自动化、数据采集和智能制造场景提供了一套轻量、灵活且高效的通信解决方案。

vim8coder的博客 280

Java中使用MapReduce实现WordCount

Java中使用hadoop实现WordCount Map端 import org.apache.hadoop.io.*; import org.apache.hadoop.mapreduce.Mapper; import java.io.IOException; public class WordCountMap extends Mapper<LongWritable, Text, Tex...

赵昕彧 770

166、电流环带宽测试

本文分享了电流环带宽测试的实战经验,揭示了常见误区:误将系统其他环节(如PWM、ADC、传感器)的延迟当作电流环性能。强调带宽测试需先断开速度/位置环,采用扫频法注入正弦信号,结合伯德图分析幅值与相位响应。关键点包括:控制频率步进为对数、确保采样时序精准、避免传感器带宽限制影响结果。文中指出“假带宽”现象(如鼓包、增益超0dB)多源于非线性或机械共振,建议遵循“先开环后闭环”“带宽非越高越好”“阶跃验证”三原则,并建立出厂基准曲线以支持后期故障诊断。

2401_88858637的博客 174

使用Mapreduce实现文件的Wordcount

1.新建一个maven工程 2.WCMapper package cn.kgc.kb09.mr; 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; /** * @Descript

qq_40333693的博客 298

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

使用IDEA+Maven实现MapReduce的WordCount功能

环境及工具要求: (以笔者为例) jdk 1.8(Windows环境下) Maven 3.3.9(Windows环境下) IDEA 2017+(Windows环境下) WinScp(Windows环境下) hadoop 2.7.3(Linux环境下) 一、配置IDEA的Maven 1.file—>new—>project 2.新窗口打开 (注意修改IDEA默认的maven路径) 修改pom.xml文件 添加下列代码: <build> <plugins&gt

qq_45634637的博客 4432

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IDEA中使用MapReduce实现wordcount和join

在idea中实现wordcount词频统计 需求分析: 1.Map过程:并行读取文本,对读取的单词进行map操作,每个词都以<key,value>形式生成 2.Reduce操作是对map的结果进行排序合并最后得出词频 1.添加maven依赖 注意hadoop-core依赖与hadoop-auth冲突,要求先注释掉。 <dependencies> <dependency> <groupId>junit</groupId>

qianchun22的博客 536

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

使用IDEA实现MapReduce的WordCount程序

分析需求: WordCount的主要需求就是统计单词出现的数量,处理过程分为Map阶段和Reduce阶段。 代码分析: Mapper类: public class WordCountMapper extends Mapper<LongWritable, Text,Text, IntWritable> { Text txt = new Text(); IntWritable intWritable = new IntWritable(); @Override pr

wanjialin的博客 863

使用MapReduce实现简单的Wordcount(pom.xml基本配置)

使用MapReduce实现简单的Wordcount(基本配置): 其中pom.xml中不仅要添加两个依赖hadoop-common和hadoop-client,如果出现一个jdk1.6的missing报错,还要加一个依赖: <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.7&lt

一个bug修一年的博客 906

大数据—— 使用 MapReduce 实现wordcount

一、创建 maven 工程并导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/x

Vicky_Tang 1万+

使用IDEA+Maven开发wordCount案例【MapReduce编程实现】

这是学习MR编程的一个典型模型,这里分享一下。 wordCount需求是统计文件中每个单词出现的次数。 处理过程中主要是将作业拆分成Map阶段(Mapper tasks)和Reduce阶段(Reducer tasks),数据转换过程如下: (input) &lt;k1, v1&gt; -&gt; map -&gt; &lt;k2, v2&gt; -&gt; combine -&gt; &...

yulutian的博客 2256

java WordCount MapReduce实现源码 使用snappy压缩

maven做如下配置groupId:org.apache.hadoopartifactId:hadoop-clientversion:${hadoop.version}类申明,继承configured类,并实现Tool接口public class WordCount extends Configured implements Tool { }实现Tool接口的run方法 public int ru...

fanghailiang2016的博客 345
上一篇: maven报错Missing artifact jdk.tools:jdk.tools:jar:1.8解决方案
下一篇: Scala平台项目构建工具:SBT
Intelligebce
博客等级 码龄10年 21粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值