MR -- OutputFormat数据输出

一、OutputFormat 介绍

OutputFormat 是 MapReduce 输出的基类,所有实现 MapReduce 输出都实现了 OutputFormat 接口。下面说一下几种常见的 OutputFormat 实现类。

1、TextOutputFormat
默认的输出格式为 TextOutputFormat,它把每条记录写为文本行。它的键和值可以是任意类型,因为 TextOutputFormat 调用 toString() 方法把它们转换为字符串。

2、SequenceFileOutputFormat
将 SequenceFileOutputFormat 输出作为后续 MapReduce 任务的输入,这便是一种较好的输出格式,因为它的格式紧凑,很容易被压缩。

3、自定义 OutputFormat
根据用户需求,自定义实现输出。

二、自定义 OutputFormat

2.1 使用场景和使用说明

1、使用场景
为了实现控制最终文件的输出路径和输出格式,可以自定义 OutputFormat。
例如:要在一个 MR 程序中根据数据的不同,输出两类结果到不同路径,这样比较灵活的需求可以自定义 OutputFormat 来实现

2、使用说明
(1) 自定义一个类继承 FileOutputFormat
(2) 改写 RecordWriter,重写 write() 方法

2.2 案例操作

1、需求
过滤输入的 log 日志,包含 atguigu 的网站输出到 F:/atguigu.log,不包含 atguigu 的网站输出到 F:/other.log。

2、数据说明
(1) 输入数据

http://www.baidu.com
http://www.google.com
http://cn.bing.com
http://www.atguigu.com
http://www.sohu.com
http://www.sina.com
http://www.sin2a.com
http://www.sin2desa.com
http://www.sindsafa.com

(2) 期望输出数据

http://www.atguigu.com
http://cn.bing.com
http://www.baidu.com
http://www.google.com
http://www.sin2a.com
http://www.sin2desa.com
http://www.sina.com
http://www.sindsafa.com
http://www.sohu.com

3、流程分析
在这里插入图片描述
4、编写代码
(1) 编写 FilterMapper 类

package customoutputformat;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * @description: 编写 FilterMapper 类
 * @author: hyr
 * @time: 2020/2/28 19:22
 */
public class FilterMapper extends Mapper<LongWritable, Text, Text, NullWritable> {
   
    @Override
    protected void map(LongWritable key
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值