初步学习MapReduce编程——编程实现文件合并和去重操作

2023-11-07

对于两个输入文件,即文件A和文件B,编写MapReduce程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新的输出文件C。

数据放TXT文件时,不能多出数据外的空行光标,不然运行程序时会显示错误:For input string: “”
在这里插入图片描述
在这里插入图片描述
直接运行Java代码得出结果

package Merge;

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.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class Merge {
	/**
	* @param args
	* 对 A,B 两个文件进行合并,并剔除其中重复的内容,得到一个新的输出文件 C
	*/
	//重载 map 函数,直接将输入中的 value 复制到输出数据的 key 上
	public static class Map extends Mapper<Object, Text, Text, Text>{
		private static Text text = new Text();
		public void map(Object key, Text value, Context context) throws 
		IOException,InterruptedException{
			text = value;
			context.write(text, new Text(""));
	} }
	//重载 reduce 函数,直接将输入中的 key 复制到输出数据的 key 上
	public static class Reduce extends Reducer<Text, Text, Text, Text>{
		public void reduce(Text key, Iterable<Text> values, Context context ) throws IOException,InterruptedException{
			context.write(key, new Text(""));
	} }
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		Configuration conf = new Configuration();
		conf.set("fs.default.name","hdfs://localhost:9000");
		String[] otherArgs = new String[]{"input","output"}; /* 直接设置输入参数
		*/
		if (otherArgs.length != 2) {
			System.err.println("Usage: wordcount <in><out>");
			System.exit(2);
		}
		Job job = Job.getInstance(conf,"Merge and duplicate removal");
		job.setJarByClass(Merge.class);
		job.setMapperClass(Map.class);
		job.setCombinerClass(Reduce.class);
		job.setReducerClass(Reduce.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(Text.class);
		FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
		FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
		System.exit(job.waitForCompletion(true) ? 0 : 1);
	}
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初步学习MapReduce编程——编程实现文件合并和去重操作 的相关文章

  • 用Excel做相关性分析

    一 概念理解 相关关系 变量之间存在着的非严格的不确定的关系 对它们进行深层次的分析 观察它们的密切程度 相关性分析 对变量之间相关关系的分析 即相关性分析 其中比较常用的是线性相关分析 用来衡量它的指标是线性相关系数 又叫皮尔逊相关系数
  • new的三种用法

    new的三种用法 第一种 创建一个新对象 Test p new Test 10 这里的new的用法是创建一个新的Test型的对象 该用法一共有三个步骤 1 申请一个空间 2 在申请的空间当中构造一个对象 并将该对象放置到空间中 3 将空间的
  • Ubuntu下NFS服务器配置及应用

    NFS文件系统仅占用系统挂载点 NFS服务器设定好分享的目录 home shares 其他客服端就可以将这个目录挂载到自己系统上的挂载点上 home shares就像自己的一个分区 但不占用自己的磁盘空间 虽然NFS有自己的协议及端口号 但
  • 必测的支付漏洞(一)——使用fiddler篡改支付金额

    互联网产品中常会遇到支付功能 测试人员测试这部分功能时一定要重视 因为如果这部分出现了较严重的bug 将会给公司带来不小的经济损失 如果你测出了问题领导也一定会高兴的 因此测试优先级很高 但具有一定难度 刚接触测试的小白们可能不知道支付功能
  • 五分钟成为记忆王

    一 记忆的面纱 1 记忆的含义 1 就在我嘴边上 有多少次你这样说过 就在我嘴边上 又有过多少次在你需要什么时候 任凭你如何拼命地想 就是想不起来 当然 这问题不是你一个人才有 几乎所有的人都受到过记忆力差的困扰 这也是人类的一个最常见的不
  • stm32 IO口的八种输入输出模式

    记录一下stm32 IO口的八种输入输出模式的学习 首先 可以看见stm32的输入输出模式有以上8种 先从简单的开始说吧 上拉输入和下拉输入 看图 由上图可见 当IO口设置为上拉输入的时候 IO口内部的上拉电阻就被接上了 从字面意思可以理解
  • Java异常总结

    1 异常的定义 定义 异常又称例外 是程序执行过程中发生的事件 它会终止程序的正常执行 2 异常的分类 Error 是JVM内部产生的 不需要程序员去解决 是不受检查异常 非代码性错误 Exception 是用户程序可能出现的异常 它是用来
  • 单片机关于推挽输出和开漏输出

    什么是推挽输出 推挽输出既可以输出高电平也可以输出低电平 推挽式输出电路 推挽式输出电路是由互补的两个三极管构成 所谓推拉 推是指推出去 就是输出为高电平是 电流是由内流向外的 形象的称之为推 拉就是从外部向内部拉 当输出为低电平时 电流由
  • java设计模式——享元模式(Flyweight Pattern)

    概述 面向对象技术可以很好地解决一些灵活性或可扩展性问题 但在很多情况下需要在系统中增加类和对象的个数 当对象数量太多时 将导致运行代价过高 带来性能下降等问题 享元模式正是为解决这一类问题而诞生的 享元模式通过共享技术实现相同或相似对象的
  • java 抓取网页_Java抓取网页数据

    有时候由于种种原因 我们需要采集某个网站的数据 但由于不同网站对数据的显示方式略有不同 本文就用Java给大家演示如何抓取网站的数据 1 抓取原网页数据 2 抓取网页JavaScript返回的数据 一 抓取原网页 这个例子我们准备从http
  • 基于Cordova插件创建app及打包成apk

    基于Cordova插件创建app及打包成apk 1 配置开发环境 一 下载并安装node js npm功能可以使用 二 利用npm安装cordova插件 三 配置JAVA ANDROID GRDLE的系统环境 1 java jdk jre设
  • ThreadLocal与局部变量

    ThreadLocal和线程局部变量有什么区别 我们先看一段代码 如下 public class ThreadLocalLearn static ThreadLocal
  • 华为OJ:ip地址与整数之间的转换

    原理 ip地址的每段可以看成是一个0 255的整数 把每段拆分成一个二进制形式组合起来 然后把这个二进制数转变成 一个长整数 举例 一个ip地址为10 0 3 193 每段数字 相对应的二进制数 10 00001010 0 00000000
  • html5里js里怎么写入sql语句,SQL语句在JavaScript中的应用

    有兴趣的朋友可以 QQ 85302520 联系我 或者 Email gongji at qq dot com 已经开放了 SVN checkout 地址 http code google com p jsql javascript sour
  • 无限级分类在DataGrid和DropDownList中的体现

    实现效果 Datagrid Dropdownlist 实现效果 Datagrid Dropdownlist 实现步骤 1 创建表 CREATE TABLE dbo mulType TypeId int IDENTITY 1 1 NOT NU
  • Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置

    QtreeView是ui中最常用的控件 Qt中QTreeWidget比QTreeView更简单 但没有QTreeView那么灵活 QTreeWidget封装的和MFC的CTreeCtrl很类似 没有mvc的特点 1 QStandardIte
  • ps换证件照背景颜色

    日常工作生活学习中经常会用到各种不同底色的证件照 手上的证件照底色不符合要求怎么办呢 以红色底色的证件照换蓝色底色证件照为例 我们一起来看看如何用ps换证件照背景颜色 下面是原始的红底证件照 我们用ps photoshop 打开该红底证件照
  • 智慧监狱解决方案-最新全套文件

    智慧监狱解决方案 最新全套文件 一 建设背景 二 思路架构 三 建设方案 四 获取 智慧监狱全套最新解决方案合集 一 建设背景 智慧监狱 是 数字法治 智慧司法 信息系统建设的重要组成部分 其主要内容是在现有监狱信息建设的基础上 充分利用大
  • 【MM32F5270开发板试用】五、rt-thread 利用SPI接口驱动SD卡

    篇文章来自极术社区与灵动组织的MM32F5270开发板评测活动 更多开发板试用活动请关注极术社区网站 作者 Magicoe是攻城狮 之前SPI接的是个2 4寸的小屏幕 鉴于MM32F5270片上没有SDIO接口用的是SPI拓展的SD卡 反正

随机推荐

  • InputStream

    在java中InputStream是字节输入流 用来将文件中的数据读取到java程序中 InputStream是所有字节输入流的顶层父类 是一个抽象类 如果要用 需要使用子类 最常用的子类 FileInputStream 构造方法 File
  • Gogs服务重启及邮件相关配置

    如何重启Gogs服务 简单粗暴地说 其实也就两步 关闭服务 gt gt 开启服务 1 关闭服务 获得启动服务的进程PID 根据使用端口查找进程ID 如配置Gogs使用的web端口为3102 则输入命令lsof i 3102 即可查看占用该端
  • 网口压线顺序_网线线序排列以及八字口诀

    网线线序排列以及八字口诀 普通网线线序一般都是按照橙白 橙 绿白 蓝 蓝白 绿 棕白 棕这个顺序排列 的 也就是 568B 线序标准 而通常情况下百兆网络自用到其中的四根线 若是只有四根线 的 则任选四根 做线时对应水晶头的 1 2 3 6
  • AD软件画电路图笔记

    最近使用AD软件画了一个arduino的板子 自己画原理图库 pcb库 原理图 pcb图 以及后来打板和原材料购买 和后来的硬件电路焊接 及硬件电路测试和烧录程序 这是我整个流程下来记的笔记 分享给大家 一 AD软件新建项目 1 两库 原理
  • Flutter Android端启动白屏

    问题描述 Flutter 应用在 Android 端上启动时会有一段很明显的白屏现象 白屏的时长由设备的性能决定 设备性能越差 白屏时间越长 问题分析 其实启动白屏的问题在Android原生应用上也是一个常见问题 大致是因为从用户点击 La
  • GameofMir引擎架设传奇服务器【2:登录器配置】

    工具 1 gom引擎自带的登录器 这里没有自带的登录器 游戏运行不了 里面带有一些密码和UI相关的文件 2 绿盟配置器 当然也可以用其他的 这里使用的绿盟的免费版本 都解压后开始配置 这里进入绿盟的文件夹 把这几个文件复制到gom自带的登录
  • C关键字volatile

    其实我想看的 想做笔记的就是就是那个汇编例子 看来汇编例子有助于了解啊 以前听人说过 高手都能将每一句C语言对应一句汇编语言 C语言关键字volatile 1 C语言关键字volatile C语言关键字volatile 注意它是用来修饰变量
  • 【maven】scalac:error while loading <root>,Error accessing

    1 概述 今天运行flink程序 编译时报如下错误 意思是访问maven下载的jar包出错 但是这个jar包已经下载好了 于是我进入jar包所在的路径 发现该包的大小只有1KB 感觉是下载有问题 于是删除该jar包 然后在pom中reimp
  • 5款linux下的笔记软件

    Evernote是一个很好的笔记软件 但是却没有linux版本 下面介绍5款linux下最好的笔记软件 1 Springseed Springseed 是 Jono Cooper 和 Michael Harker 一起开发的 是一个使用非常
  • Python手册(Standard Library)--datetime+time+calendar

    文章目录 datetime datetime timedelta datetime date datetime datetime datetime time python中时间日期格式化符号 time time struct time 时间
  • transformer论文_Transformer相关论文阅读笔记

    最近在使用Transformer模型跑任务 正好加入了同学组织的一个暑期文献打卡群 于是决定假期每天读一篇文献 主要关于近两年对于Transformer模型应用的论文 阅读论文的笔记分享给大家 7月18日 R transformer Rec
  • 安装pytorch-metric-learning

    https github com KevinMusgrave pytorch metric learning pytorch metric learning的github官方网址 安装pytorch metric learning 1 直接
  • vite遇见跨域怎么解决

    1 找到vite config js 2 找到defineConfig下面的server proxy 代理名称 target 地址 changeOrigin true rewrite path gt path replace 代理名称 3
  • 数字分类 C语言

    给定一系列正整数 请按要求对数字进行分类 并输出以下 5 个数字 A1 能被 5 整除的数字中所有偶数的和 A2 将被 5 除后余 1 的数字按给出顺序进行交错求和 即计算 n1 n2 n3 n4 A3 被 5 除后余 2 的数字的个数 A
  • Element-ui使用Select多选框如何给value属性绑定对象类型

    如何给select多选下拉框的value属性绑定对象类型时怎么做 现在select标签处有一个value key属性绑定值必须是为option标签中v for遍历的数组中的元素 该元素值必须具有唯一性 在option属性key处绑定值为数组
  • 分类算法及其应用场景

    单一的分类方法主要包括 LR逻辑回归 SVM支持向量机 DT决策树 NB朴素贝叶斯 NN人工神经网络 K 近邻 集成学习算法 基于Bagging和Boosting算法思想 RF随机森林 GBDT Adaboost XGboost
  • 使用vim编写并编译运行C++程序并添加代码补全等功能

    听说使用vim写程序效率非常高 今天满怀一腔热血准备把vim整利索了 写篇笔记记录一下防止以后忘了 vim功能很多 我也只能是解决我现在的需求 以后遇到更多的需求再扩充 如果读者有什么建议和问题欢迎留言讨论 vim 编写一个C 程序并保存
  • Java中实现文件上传下载的三种解决方案(推荐)

    前言 文件上传是一个老生常谈的话题了 在文件相对比较小的情况下 可以直接把文件转化为字节流上传到服务器 但在文件比较大的情况下 用普通的方式进行上传 这可不是一个好的办法 毕竟很少有人会忍受 当文件上传到一半中断后 继续上传却只能重头开始上
  • 我的 2020 总结:跌宕起伏

    文章目录 复盘与展望 复盘与展望 2020总结 2021计划 个人 生理健康 55kg前半年熬夜较多眼睛干涩 眼睑有障碍 经常热敷毛巾 蒸汽眼罩滴眼药水 坚持锻炼 俯卧撑 开合跳 心理健康 6月份左右申请过劳动仲裁 迟迟拿不到钱比较着急 找
  • 初步学习MapReduce编程——编程实现文件合并和去重操作

    对于两个输入文件 即文件A和文件B 编写MapReduce程序 对两个文件进行合并 并剔除其中重复的内容 得到一个新的输出文件C 数据放TXT文件时 不能多出数据外的空行光标 不然运行程序时会显示错误 For input string 直接