MapReduce编程

自定义Mapper类

class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>
{ … }
  1. 自定义mapper类都必须实现Mapper类,有4个类型参数,分别是:
  • Object:Input Key Type-------------K1
  • Text: Input Value Type-----------V1
  • Text: Output Key Type-----------K2
  • IntWritable: Output Value Type—V2
  1. 自定义mapper类须继承Mapper类,重写map方法;

image.png

  1. 执行一次map函数,即处理一行数据;

自定义Reducer类

class IntSumReducer
extends Reducer<Text, IntWritable, Text, IntWritable>
{ … }
  1. 自定义Reducer类都必须实现Reducer类,有4个类型参数,分别是:
  • Text: Input Key Type-------------K2
  • IntWritable: Input Value Type-----------V2
  • Text: Output Key Type-----------K3
  • IntWritable: Output ---------V3
  1. 自定义Reducer类须继承Reducer类,重写Reduce方法
    image.png
  2. 执行一次Reduce函数,即处理一个Key的数据(values);

Hadoop的序列化格式

  • 序列化(Serialization)是指把结构化对象转化为字节流。
  • 反序列化(Deserialization)是序列化的逆过程。即把字节流转回结构化对象。
  • Java序列化(java.io.Serializable)

Hadoop序列化格式特点:

  • 紧凑:高效使用存储空间。
  • 快速:读写数据的额外开销小
  • 可扩展:可透明地读取老格式的数据
  • 互操作:支持多语言的交互

Hadoop序列化的作用

  • 序列化在分布式环境的作用:进程间通信,永久存储。
  • Hadoop节点间通信

Writable接口

Writable接口是根据 DataInput 和 DataOutput 实现的简单、有效的序列化对象。

  • MR的任意Key和Value必须实现Writable接口
  • MR的任意key必须实现WritableComparable接口。
    image.png
    Hadoop序列化类型,与java基本类型的转换操作:get,set
    image.png

自定义类型

image.png
在这里插入图片描述

Context

它是mapper的一个内部类,简单的说是为了在map或是
reduce任务中跟踪App的状态,很自然的MapContext就是记
录了map执行的上下文,在mapper类中,这个context可以存
储一些job conf的信息,如运行时参数、输入文件分片信息

InputFormat

• TextInputFormat,默认的格式,每一行是一个单
独的记录,并且作为value,文件的偏移值作为key

• KeyValueInputFormat,这个格式每一行也是一个
单独的记录,但是Key和Value用Tab隔开,是默认
的OutputFormat,可以作为中间结果,作为下一
步MapReduce的输入。

• SequenceFileInputFormat

  • 基于块进行压缩的格式
  • 对于几种类型数据的序列化和反序列化操作
  • 用来将数据快速读取到Mapper类中

Partitioner类

在Map工作完成之后,每一个 Map函数会将结果
“传到” 对应的Reducer所在的节点,此时,用户可以提供一个Partitioner类,用
来决定一个给定的(key,value)对传输的具体位置;

Combiner类

Map端会产生大量的输出,Combiner作用就是在
map端对输出先做一次合并,以减少传输到
Reducer的数据量;

Output Format

image.png

Maper、Reducer类的setup、cleaup方法

在run方法中调用了三个方法:setup方法,
map方法,cleanup方法。其中setup方法和
cleanup方法默认是不做任何操作,且它们
只被执行一次。但是setup方法一般会在map
函数之前执行一些准备工作,如作业的一些
配置信息等;cleanup方法则是在map方法运
行完之后最后执行的,该方法是完成一些结
尾清理的工作,如:资源释放等
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统计信息在数据库中的作用_统计在行业中的作用

统计信息在数据库中的作用数据科学与机器学习 (DATA SCIENCE AND MACHINE LEARNING) Statistics are everywhere, and most industries rely on statistics and statistical thinking to support their business. The interest to grasp on statistics also required to become…

IOS手机关于音乐自动播放问题的解决办法

2019独角兽企业重金招聘Python工程师标准>>> 评估手机自带浏览器不能识别 aduio标签重的autoplay属性 也不能自动执行play()方法 一个有效的解决方案是在微信jssdk中调用play方法 document.addEventListener("WeixinJSBridgeReady", function () { docum…

svg标签和svg文件区别_什么是SVG文件? SVG图片和标签说明

svg标签和svg文件区别SVG (SVG) SVG or Scalable Vector Graphics is a web standard for defining vector-based graphics in web pages. Based on XML the SVG standard provides markup to describe paths, shapes, and text within a viewport. The markup can be embedded…

开发人员怎么看实施人员

英文原文&#xff1a;What Developers Think Of Operations&#xff0c;翻译&#xff1a;张红月CSDN 在一个公司里面&#xff0c;开发和产品实施对于IS/IT的使用是至关重要的&#xff0c;一个负责产品的研发工作&#xff0c;另外一个负责产品的安装、调试等工作。但是在开发人员…

怎么评价两组数据是否接近_接近组数据(组间)

怎么评价两组数据是否接近接近组数据(组间) (Approaching group data (between-group)) A typical situation regarding solving an experimental question using a data-driven approach involves several groups that differ in (hopefully) one, sometimes more variables.使…

代码审计之DocCms漏洞分析

0x01 前言 DocCms[音译&#xff1a;稻壳Cms] &#xff0c;定位于为企业、站长、开发者、网络公司、VI策划设计公司、SEO推广营销公司、网站初学者等用户 量身打造的一款全新企业建站、内容管理系统&#xff0c;服务于企业品牌信息化建设&#xff0c;也适应用个人、门户网站建设…

你让,勋爵? 使用Jenkins声明性管道的Docker中的Docker

Resources. When they are unlimited they are not important. But when theyre limited, boy do you have challenges! 资源。 当它们不受限制时&#xff0c;它们并不重要。 但是&#xff0c;当他们受到限制时&#xff0c;男孩你有挑战&#xff01; Recently, my team has fa…

翻译(九)——Clustered Indexes: Stairway to SQL Server Indexes Level 3

原文链接&#xff1a;www.sqlservercentral.com/articles/StairwaySeries/72351/ Clustered Indexes: Stairway to SQL Server Indexes Level 3 By David Durant, 2013/01/25 (first published: 2011/06/22) The Series 本文是阶梯系列的一部分&#xff1a;SQL Server索引的阶梯…

power bi 中计算_Power BI中的期间比较

power bi 中计算Just recently, I’ve come across a question on the LinkedIn platform, if it’s possible to create the following visualization in Power BI:就在最近&#xff0c;我是否在LinkedIn平台上遇到了一个问题&#xff0c;是否有可能在Power BI中创建以下可视化…

-Hive-

Hive定义 Hive 是一种数据仓库技术&#xff0c;用于查询和管理存储在分布式环境下的大数据集。构建于Hadoop的HDFS和MapReduce上&#xff0c;用于管理和查询分析结构化/非结构化数据的数据仓库; 使用HQL&#xff08;类SQL语句&#xff09;作为查询接口&#xff1b;使用HDFS作…

CentOS 7 安装 JDK

2019独角兽企业重金招聘Python工程师标准>>> 1、下载oracle jdk 下载地址&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/index.html 选择同一协议&#xff0c;下载rpm格式版本jdk&#xff0c;或tar.gz格式jdk。 2、卸载本机openjdk 2.1、查…

javascript 布尔_JavaScript布尔说明-如何在JavaScript中使用布尔

javascript 布尔布尔型 (Boolean) Booleans are a primitive datatype commonly used in computer programming languages. By definition, a boolean has two possible values: true or false.布尔值是计算机编程语言中常用的原始数据类型。 根据定义&#xff0c;布尔值有两个…

如何进行数据分析统计_对您不了解的数据集进行统计分析

如何进行数据分析统计Recently, I took the opportunity to work on a competition held by Wells Fargo (Mindsumo). The dataset provided was just a bunch of numbers in various columns with no indication of what the data might be. I always thought that the analys…

经典:区间dp-合并石子

题目链接 &#xff1a;http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid737 这个动态规划的思是&#xff0c;要得出合并n堆石子的最优答案可以从小到大枚举所有石子合并的最优情况&#xff0c;例如要合并5堆石子就可以从&#xff0c;最优的23和14中得到最佳的答案。从两堆…

常见排序算法_解释的算法-它们是什么以及常见的排序算法

常见排序算法In its most basic form, an algorithm is a set of detailed step-by-step instructions to complete a task. For example, an algorithm to make coffee in a french press would be:在最基本的形式中&#xff0c;算法是一组完成任务的详细分步说明。 例如&…

020-Spring Boot 监控和度量

一、概述 通过配置使用actuator查看监控和度量信息 二、使用 2.1、建立web项目&#xff0c;增加pom <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> 启动项目&a…

matplotlib布局_Matplotlib多列,行跨度布局

matplotlib布局For Visualization in Python, Matplotlib library has been the workhorse for quite some time now. It has held its own even after more nimble rivals with easier code interface and capabilities like seaborn, plotly, bokeh etc. have arrived on the…

Hadoop生态系统

大数据架构-Lambda Lambda架构由Storm的作者Nathan Marz提出。旨在设计出一个能满足实时大数据系统关键特性的架构&#xff0c;具有高容错、低延时和可扩展等特性。Lambda架构整合离线计算和实时计算&#xff0c;融合不可变性&#xff08;Immutability&#xff09;&#xff0c…

javascript之 原生document.querySelector和querySelectorAll方法

querySelector和querySelectorAll是W3C提供的 新的查询接口&#xff0c;其主要特点如下&#xff1a; 1、querySelector只返回匹配的第一个元素&#xff0c;如果没有匹配项&#xff0c;返回null。 2、querySelectorAll返回匹配的元素集合&#xff0c;如果没有匹配项&#xff0c;…

RDBMS数据定时采集到HDFS

[toc] RDBMS数据定时采集到HDFS 前言 其实并不难&#xff0c;就是使用sqoop定时从MySQL中导入到HDFS中&#xff0c;主要是sqoop命令的使用和Linux脚本的操作这些知识。 场景 在我们的场景中&#xff0c;需要每天将数据库中新增的用户数据采集到HDFS中&#xff0c;数据库中有tim…