十七 OutputFormat数据输出

本文介绍了MapReduce的OutputFormat接口及其常见实现,如TextOutputFormat和SequenceFileOutputFormat。针对特定需求,文章详细阐述了如何自定义OutputFormat,包括使用场景和自定义步骤,并给出了一例过滤日志数据并分别输出到不同文件的实践操作。
摘要由CSDN通过智能技术生成

1 简介和OutputFormat接口实现类

OutputFormat是MapReduce输出的基类,所有实现MapReduce输出都实现了 OutputFormat接口。下面我们介绍几种常见的OutputFormat实现类.

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

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

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

2 自定义OutputFormat

1.使用场景
为了实现控制最终文件的输出路径和输出格式,可以自定义OutputFormat。
例如:要在一个MapReduce程序中根据数据的不同输出两类结果到不同目录,这类灵活的输出需求可以通过自定义OutputFormat来实现。
2.自定义OutputFormat步骤
(1)自定义一个类继承FileOutputFormat。
(2)改写RecordWriter,具体改写输出数据的方法write()。

  1. 自定义OutputFormat案例实操

(1).需求
过滤输入的log日志,包含baidu的网站输出到一个文件,不包含baidu的网站输出到另一个文件。

MyoutputMapper 类

package com.myoutput;

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;

/**
 * @author andy
 * @version 1.0
 * @date 2020/3/2 21:34
 * @contact andy.freedoms@gmail.com
 * @since JDK 1.8
 */
public class MyoutputMapper extends Mapper<LongWritable, Text,Text, NullWritable> {
   
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
   
        context.write(value,NullWritable.get()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值