Hadoop之数据清洗
数据清洗(ETL)
在运行核心业务MapReduce程序之前,往往需要先对数据进行清洗,清
理掉不符合用户要求的数据,清理的过程往往只需要运行Mapper程序,不
需要运行Reduce程序。
1)需求:
(1)去除 web.log 日志中字段个数小于等于11的日志
(2)期望输出数据:每行字段长度都大于11
2)需求分析:
需要在Map阶段对输入的数据根据规则进行过滤清洗
3)实现代码:
(1)编写EtlMapper类
package com.atguigu.mapreduce.etl;
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 xiaohu
* @create 2020-08-12 20:48
*/
public class ETLMapper extends Mapper<LongWritable, Text, Text, NullWritable> {
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
//1.获取一行数据
String log = value.toString();
//2.对日志进行解析
boolean reault = parseLog(log, context);
//3.如果这一行日志符合要求,写出;否则,不写出
if(reault){
context.write(value,NullWritable.get