Mapreduce_wordcount自定义单词计数
自定义的wordcount
数据处理过程
- 加载jar包
查看后面的pom文件
以上为需要的jar包路径,将其导入至idea中
- Map
package com.hadoop;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;
// K1 V1 K2 V2 的数据类型
public class WMap extends Mapper<LongWritable, Text, Text, IntWritable> {//Context标识上下文,比如上一节的输入以及下一节的输出,一个JOB可能存在多个MAP和多个REDUCE@Overridepublic void map(LongWritable key1, Text value1, Context context)throws IOException, InterruptedException {//获取数据,v1是输入String data = value1.toString();//逻辑:分词String[] words = data.split(" ");//v2是一个集合的形式//k2和k1的数据类型是相同的,表示一个具体的分类for (String w : words) {//这是对下文的编写,即输出// K2 V2context.write(new Text(w), new IntWritable(1));}}
}
- Reduce
package com.hadoop;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;
// K3 V3 K4 V4
public class WReduce extends Reducer<Text, IntWritable, Text,IntWritable>{// 集合V3@Overrideprotected void reduce(Text k3, Iterable<IntWritable> v3, Context context)throws IOException, InterruptedException {//求和int total=0;for (IntWritable v:v3){total+=v.get();}//输入和输出必须是hadoop支持的类型context.write(k3,new IntWritable(total));}
}
- Main
package com.hadoop;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 org.apache.hadoop.streaming.io.InputWriter;public class Main {public static void main(String[] args) throws Exception {//1.创建job。Job job =Job.getInstance(new Configuration());//2.任务入口job.setJarByClass(Main.class);//3.指定任务的Map和输出类型job.setMapperClass(WMap.class);job.setMapOutputKeyClass(Text.class);//k2job.setMapOutputValueClass(IntWritable.class);//v2//4.指定Reduce和输出类型job.setReducerClass(WReduce.class);job.setOutputKeyClass(Text.class);//k4job.setOutputValueClass(IntWritable.class);//v4//任务输入和输出FileInputFormat.setInputPaths(job,new Path(args[0]));FileOutputFormat.setOutputPath(job,new Path(args[1]));//任务执行//参数true表示打印相关的日志job.waitForCompletion(true);}
}
- 打包部署执行
采用Maven进行管理
pom.xml
<?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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hadoop</groupId><artifactId>Mapreduce_wordcount</artifactId><version>1.0-SNAPSHOT</version><name>Mapreduce_wordcount</name><description>wunaiieq</description><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--版本控制--><hadoop.version>2.7.3</hadoop.version></properties><dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-yarn-api</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-streaming</artifactId><version>${hadoop.version}</version></dependency></dependencies><!--构建配置--><build><plugins><plugin><!--声明--><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version><!--具体配置--><configuration><archive><manifest><!--jar包的执行入口--><mainClass>com.hadoop.Main</mainClass></manifest></archive><descriptorRefs><!--描述符,此处为预定义的,表示创建一个包含项目所有依赖的可执行 JAR 文件;允许自定义生成jar文件内容--><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><!--执行配置--><executions><execution><!--执行配置ID,可修改--><id>make-assembly</id><!--执行的生命周期--><phase>package</phase><goals><!--执行的目标,single表示创建一个分发包--><goal>single</goal></goals></execution></executions></plugin></plugins></build>
</project>
- 运行
hadoop jar Mapreduce_wordcount-1.0-SNAPSHOT-jar-with-dependencies.jar /input/data.txt /output/wordcount/
- 效果
结果查看
hdfs dfs -cat /output/wordcount/part-r-00000
相关文章:

Mapreduce_wordcount自定义单词计数
自定义的wordcount 数据处理过程 加载jar包 查看后面的pom文件 以上为需要的jar包路径,将其导入至idea中 Map package com.hadoop;import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; im…...

安卓开发中的AppCompat框架使用详解
引言 在安卓开发中,为了确保应用能够在不同版本的安卓系统上保持一致的外观和行为,Google 推出了 AppCompat 支持库。AppCompat 支持库提供了一系列兼容性组件和行为,允许开发者使用较新的 UI 组件和功能,同时保持应用向后兼容旧…...

docker中挂桶什么意思
“挂桶”是指在 Docker 容器中挂载一个存储桶(通常指的是云存储桶,如 AWS S3、阿里云 OSS 等)或本地存储目录的操作。通过挂载,Docker 容器可以直接访问存储桶中的文件,就像访问本地文件系统一样。 具体来说ÿ…...

鸿蒙开发Location Kit(位置服务)如何设置
鸿蒙Location Kit 是一个强大的位置服务工具包,允许开发者在应用程序中集成精确的定位功能。Location Kit 提供了多种定位模式,支持室内和室外定位,并结合了GPS、Wi-Fi、蓝牙和基站等多种定位技术。 核心功能 精确定位:支持高精…...

O2OA开发知识-后端代理/接口脚本编写也能像前端一样用上debugger
在o2oa开发平台中,后端代理或者接口的脚本编写也能像前端一样用上debugger,这是来自藕粉社区用户的宝贵技术支持。 感谢藕粉社区论坛用户提供的技术分享!tzengsh_BTstthttps://www.o2oa.net/forum/space-uid-4410.html 论坛地址:…...

树莓集团:引领数字影像技术培训的标杆
在当今数字化的时代,数字影像技术已经成为了各个领域中不可或缺的一部分。从电影、广告到游戏、虚拟现实,数字影像的应用无处不在。而在这个充满机遇与挑战的领域中,树莓集团凭借其卓越的实力,成为了引领数字影像技术培训的标杆。…...

为什么老实人普遍难拿高薪?这个答案让我醍醐灌顶!30岁的我决定开始改变
大家好,我是灵魂画师向阳 先问大家一个老生常谈的问题:老实人真的很难拿高薪吗?实话说,答案是一定的… 当然不是所有老实人都这样,但起码有一大部分人会面临这样的困境,原因也不外乎是以下几种࿱…...

react的pdf转图片格式上传到后端
这个东西做的我真的是头昏脑涨 主要需求是,upload上传pdf,pdf转图片格式展示,以图片格式上传到后端 封装了组件代码,父组件直接放就可以了 使用的插件pdfjs-dist,版本是 "pdfjs-dist": "2.5.207",node:14.13.0/18.17.0/16.14.2都可以你们要注意n…...

【STM32 FreeRTOS】任务通知
任务通知简介 任务通知:用来通知任务的,任务控制块中的结构体成员变量ulNotifiedValue(32位)就是这个通知值。 #if( configUSE_TASK_NOTIFICATIONS 1 )volatile uint32_t ulNotifiedValue;volatile uint8_t ucNotifyState;#endi…...

51单片机学习
定时器流水灯 #include <REGX52.H> #include "Timer0.h" #include "Key.h" #include <INTRINS.H> unsigned char KeyNum,LEDMode; void main() { P20xFE; Timer0Init(); while(1) { KeyNumKey(); if(KeyNum)…...

vue项目实现postcss-pxtoremvue大屏适配
1.安装依赖 npm install postcss-pxtorem autoprefixer postcss-loader --save-dev # 或者 yarn add postcss-pxtorem autoprefixer postcss-loader --dev2.配置 PostCSS 在项目根目录下创建一个 .postcssrc.js 文件,并添加以下配置: module.exports …...

如何打造爆款游戏?开发由你操刀,运维交由我托管,合作共赢创造更大成功
Linode提供的云计算服务都有哪里的哪些人在用,又都用来做什么?简而言之:世界各地!各行各业!!丰富多彩!!! 今天我们将关注云计算在游戏行业的应用。在这篇文章里…...

颈部按摩仪语音播报芯片方案,高品质语音IC,NV080D
想要利用碎片化的时间按摩肩颈,颈部按摩仪是很好的选择。然而,随着科技的不断进步,一些新的技术也开始被应用于颈部按摩仪中,以提升它们的功能和用户体验。 例如,NV080D语音播放芯片在颈部按摩仪上的应用,…...

Opencv模板匹配
使用OpenCV和C来识别彩色图片中的特定物体,如黑桃♠,通常涉及几个步骤:预处理图像、特征提取、对象检测等。下面是一个基本的示例代码,演示如何使用OpenCV的模板匹配方法来识别图片中的黑桃♠。 函数原型 void matchTemplate(Inp…...

JavaScript DOM事件监听器:深入解析与实践应用
引言 在JavaScript中,DOM(文档对象模型)事件监听器是与用户交互的核心机制之一。它们允许开发者响应用户的行为,如点击、滚动、输入等,从而创建动态和交互式的网页。本文将深入探讨DOM事件监听器的工作原理、类型以及…...

iOS的App启动详细过程(底层知识)
1.虚拟内存 & ASLR 在早期计算机中数据是直接通过物理地址访问的,这就造成了下面两个问题 1.内存不够用 2.数据安全问题 内存不够 ---> 虚拟内存 虚拟内存就是通过创建一张物理地址和虚拟地址的映射表来管理内存,提高了CPU利用率,…...

【轨物推荐】创新者的钥匙:如何破解创新的最大难题
原创 混沌学园 混沌学园 2021年12月27日 19:55 本文重点在于,将纷繁复杂现象中,针对创新的灵魂问题“不创新是等死,创新是找死”,给出本质上的解读、解析和解答。将创新在保守和发散的两难选择中,下探本质找到那个价值…...

SpringCloud的能源管理系统-能源管理平台源码
介绍 基于SpringCloud的能源管理系统-能源管理平台源码-能源在线监测平台-双碳平台源码-SpringCloud全家桶-能管管理系统源码 软件架构...

Mybatis获取主键自增的方法
原本的方法 使用原本的JDBC去获取主键自增的方法如下图所示: 在这段代码中,通过连接对象 conn 的 prepareStatement 方法创建了一个PreparedStatement对象,并将SQL语句和 RETURN_GENERATED_KEYS 常量作为参数传递给该方法。这意味着执行SQL…...

strip 、objdump、objcopy 差异与区别
strip 、objdump、objcopy 差异与区别 strip 命令用于从已编译的可执行文件或目标文件中移除调试信息和其他非必要数据。这可以减小文件的大小,并且有助于保护源代码不被轻易反编译。通常,在发布软件时会使用 strip 命令来减少二进制文件的体积 objdump…...

本地phpstudy部署算命系统,用户端是H5页面,支持微信支付宝支付,支持微信支付宝登录
算命系统本地部署教程 0. 技术架构1. 启动Apache、MySQL服务2. 创建前台和后台两个网站3. Navicat连接数据库4. 登录后台是长这个样子5. 登录前台登录样子6. 代码结构是 0. 技术架构 前端:HTMLCSSJquery 后端:PHP 数据库:MySQL 1. 启动Ap…...

APP上架苹果App Store被拒原因及解决方案
苹果官方商店的审核大致分为三部分:预审、机审和人工审核,审核流程包括:初步提交、审核队列、审核过程、结果通知等步骤。#iOS App Store审核是非常严格的,很多很多APP,并不是能够一次上架成功,大部分APP都…...

docker-compose的下载
方式一:使用二进制文件安装。 GitHub官方下载安装(推荐,速度慢但不会出错) 1.GitHub官方下载(测试,已成功) curl -SL https://github.com/docker/compose/releases/download/v2.29.1/docker-c…...

h3c虚拟园区网概述
虚拟园区网概述 H3C虚拟园区网的解决方案 企业园区网作为企业网络的核心部分,连接了企业总部的办公、生产、研发、财务等多种重要的机 构。在网络建设中占有重要的地位。园区网内部终端种类众多,接入用户数量庞大,对网络的性能、可 靠性、可管理性都有较高的要求…...

云原生和安装Ubuntu 22系统
一.云原生简介 2004年开始,Google已在内部大规模地使用容器技术。 2008年,Google将 Cgroups合并进入了Linux内核。2013年,Docker项目正式发布。2014年,Kubernetes项目正式发布。2015年,由Google、Redhat 以及微软等大…...

HTTP代理IP如何助力旅游大数据领域?怎么建立安全的代理隧道连接?
在旅游行业,数据的准确性和实时性至关重要。随着大数据分析的兴起,HTTP代理IP成为了这一领域中不可或缺的工具。本文将探讨HTTP代理IP如何帮助旅游大数据领域,并介绍如何建立安全的代理隧道连接。 1. HTTP代理IP在旅游大数据领域的应用 1.1…...

AIGC从入门到实战:基础理论【核心算法与模型】
历史导读: 三、AIGC从入门到实战:基础理论【模型微调】 二、AIGC从入门到实战:AIGC基础理论 一、AIGC从入门到实战:为什么要了解AIGC 核心算法与模型 在人工智能生成内容(AIGC)领域,技术的飞速进步催生了一系列高效且创新的生成模型&…...

极狐GitLab 17.2发布了哪些 JH-Only 的功能?
极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…...

css中的高度塌陷
CSS高度塌陷(或称为高度坍塌)是指在某些特定情况下,元素的高度无法被正确计算或显示的现象。这通常发生在具有浮动属性的元素或使用绝对定位的元素周围。 原因 高度塌陷通常发生在父元素包含着一个或多个浮动元素时。由于浮动元素被移出了正…...

怎样使用sudo的时候不需要输入密码?
在Ubuntu等Linux系统下,经常要在个人账户使用sudo命令来执行一些需要root权限的命令,但是需要输入该账户的密码,有时候显得很繁琐, 那么怎样使用sudo的时候不需要输入密码呢? 有如下两种方法: 常规方法1…...