前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop数据分析平台实战——060深入理解MapReduce 01(案例)离线数据分析平台实战——060深入理解MapReduce 01(案例)

Hadoop数据分析平台实战——060深入理解MapReduce 01(案例)离线数据分析平台实战——060深入理解MapReduce 01(案例)

作者头像
Albert陈凯
发布2018-04-08 11:11:19
8520
发布2018-04-08 11:11:19
举报
文章被收录于专栏:Albert陈凯Albert陈凯

离线数据分析平台实战——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中。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.08.29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 离线数据分析平台实战——060深入理解MapReduce 01(案例)
    • 用户自定义数据类型
      • 用户定制数据输入格式化器
        • InputFormat详解
          • RecordReader详解
            • FileSplit详解
              • 用户定制数据输出格式化器
                • OutputFormat详解
                  • 案例-MongoDB Hadoop实例
                  相关产品与服务
                  对象存储
                  对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档