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…

开发人员怎么看实施人员

英文原文&#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;也适应用个人、门户网站建设…

翻译(九)——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、查…

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

如何进行数据分析统计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…

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…

使用Hadoop所需要的一些Linux基础

Linux 概念 Linux 是一个类Unix操作系统&#xff0c;是 Unix 的一种&#xff0c;它 控制整个系统基本服务的核心程序 (kernel) 是由 Linus 带头开发出来的&#xff0c;「Linux」这个名称便是以 「Linus’s unix」来命名的。 Linux泛指一类操作系统&#xff0c;具体的版本有&a…

python多项式回归_Python从头开始的多项式回归

python多项式回归Polynomial regression in an improved version of linear regression. If you know linear regression, it will be simple for you. If not, I will explain the formulas here in this article. There are other advanced and more efficient machine learn…

回归分析_回归

回归分析Machine learning algorithms are not your regular algorithms that we may be used to because they are often described by a combination of some complex statistics and mathematics. Since it is very important to understand the background of any algorith…

数据科学还是计算机科学_何时不使用数据科学

数据科学还是计算机科学意见 (Opinion) 目录 (Table of Contents) Introduction 介绍 Examples 例子 When You Should Use Data Science 什么时候应该使用数据科学 Summary 摘要 介绍 (Introduction) Both Data Science and Machine Learning are useful fields that apply sev…

leetcode 523. 连续的子数组和

给你一个整数数组 nums 和一个整数 k &#xff0c;编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组&#xff1a; 子数组大小 至少为 2 &#xff0c;且 子数组元素总和为 k 的倍数。 如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 …

Docker学习笔记 - Docker Compose

一、概念 Docker Compose 用于定义运行使用多个容器的应用&#xff0c;可以一条命令启动应用&#xff08;多个容器&#xff09;。 使用Docker Compose 的步骤&#xff1a; 定义容器 Dockerfile定义应用的各个服务 docker-compose.yml启动应用 docker-compose up二、安装 Note t…

线性回归算法数学原理_线性回归算法-非数学家的高级数学

线性回归算法数学原理内部AI (Inside AI) Linear regression is one of the most popular algorithms used in different fields well before the advent of computers. Today with the powerful computers, we can solve multi-dimensional linear regression which was not p…