Hadoop数据分析平台实战——060深入理解MapReduce 01(案例)离线数据分析平台实战——060深入理解MapReduce 01(案例)
离线数据分析平台实战——060深入理解MapReduce 01(案例)
用户自定义数据类型
MapReduce中的数据类型至少有两种用途。 第一个用途,这些类型定义的数据可以被序列化进行网络传输和文件存储, 第二个用途,在shuffle阶段要可以进行大小比较。 那么在hadoop中解决 第一种方式采用hadoop的接口Writable, 第二种采用接口java接口Comparable(Hadoop将这两个接口结合提供了WritableComparable接口)。
Hadoop提供了很多的内置数据类型, 比如:MapWritable, LongWritable, IntWritable, BooleanWritable, ByteWritable, DoubleWritable, FloatWritable, Text, NullWritable等。
用户定制数据输入格式化器
数据输入格式(InputFormat)用于描述MR作业的数据输入格式规范。 MapReduce框架依赖InputFormat进行输入数据分片以及提供读取分片数据的RecordReader实例对象。 每一个InputFormat类都会有一个对应的RecordReader类, RecordReader类主要作用是将输入数据转换为键值对, 传输给mapper阶段的map方法。
MapReduce默认的数据输入格式是: TextInputFormat(LineRecordReader)。 除了这个格式器以外, 还有KeyValueTextInputFormat, CombineTextInputFormat, SequenceFileInputFormat, DBInputFormat等。
InputFormat详解
全称:org.apache.hadoop.mapreduce.InputFormat
方法详解:
getSplits
:返回值是分片信息集合;作用:通过分片个数确定mappre的个数,并根据分片信息中的数据地址信息决定是否采用数据本地化策略。
createRecordReader
:创建一个具体读取数据并构造key/value键值对的RecordReader实例对象。
RecordReader详解
全称:org.apache.hadoop.mapreduce.RecordReader
方法详解:
initialize
:根据对应的分片信息进行初始化操作。
nextKeyValue
:判断是否还有下一个key/value键值对,如果有返回true;否则返回false。
getCurrentKey
/getCurrentValue
:获取当前key/value键值对。
getProgress
:获取操作进度信息。
close
:关闭资源读取相关连接。
FileSplit详解
全称:org.apache.hadoop.mapreduce.InputSplit
方法详解:
getLength
:获取分片长度。
getLocations
:获取该分片数据对应的位置信息,确定数据本地化时候有用。
用户定制数据输出格式化器
数据输出格式(OutputFormat)用于描述MR作业的数据输出格式规范。 MapReduce框架依赖OutputFormat进行输出路径(输出空间)检测、获取提交job的OutputCommitter实例对象以及提供一个具体定义如何输出数据的RecordWriter实例对象。 每一个OutputFormat类都会有一个对应的RecordWriter类,RecordWriter类主要作用是明确定义如何写入以及写入的格式,接收reducer阶段输出的key/value键值对。
MapReduce默认的数据输出格式是: TextOutputFormat(LineRecordWriter)。 除了这个格式器以外,还有SequenceFileOutputFormat, DBOutputFormat等。
OutputFormat详解
全称:org.apache.hadoop.mapreduce.OutputFormat
方法详解:
getRecordWriter
:创建一个具体写数据的RecordWriter实例。
checkOutputSpecs
:检测输出空间相关信息,如果检测失败,直接抛出异常。
getOutputCommitter
:获取一个提交job的committer对象。一般情况下,直接使用FileOutputCommitter
对象即可。如果觉得FileOutputCommitter
内容比较多,也可以自己实现一个完全为空的类。
案例-MongoDB Hadoop实例
实现功能:从MongoDB中读取日志数据,将MapReduce程序处理过的数据写出到MongoDB中。
- JavaScript依赖注入的实现思路
- No.011 Container With Most Water
- No.009 Palindrome Number
- Windows DNS API RCE漏洞分析及PoC构造
- 爬虫采集去重优化浅谈
- Android基础总结(10)——手机多媒体的运用:通知、短信、相机、视频播放
- Android基础总结(9)——网络技术
- 【Python环境】基于 Python 和 Scikit-Learn 的机器学习介绍
- 【Python环境】Python分类现实世界的数据
- Android基础总结(7)——异步消息处理
- No.008 String to Integer (atoi)
- No.007 Reverse Integer
- No.006 ZigZag Conversion
- No.005 Longest Palindromic Substring
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- a伪类
- CodeForces - 1102A(思维题)
- C++使用指针,动态数组,指针做参数需要注意的问题等总结
- POJ 1170 Shopping Offers非状态压缩做法
- HDU 4283 You Are the One
- C++cin,cout以及常见函数总结,cin,cout格式化控制
- 最简单,最明了,看了就会的VScode和C++的配置!(Visual Studio Code)
- C++字符串输入输出以及复合类型浅谈
- Codeforce 1155D Beautiful Array(DP)
- C++类型转换几种情况
- 疯子的算法总结(九) 图论中的矩阵应用 Part 1 POJ3613 Cow Relays
- 『数据库』你这些知识点都不会,你学个锤子SQL数据库!
- The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 XKC's basketball team
- The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 D Carneginon
- 地表最强的MySQL安装一键式安装,信不信你下完我就给你装好!附各种Mysql安装失败的解决办法(什么你安装失败了?快来看这个)