首页服务器Web服务器 Hadoop计数器的应用以及数据清洗

Hadoop计数器的应用以及数据清洗

数据清洗(ETL) 在运行核心业务MapReduce程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据。清理的过程往往只需要运行Mapper程序,不需要运行Reduce程序。 1.需求 去…

Hadoop,计数器,应用,数据清洗

数据清洗(ETL)

在运行核心业务MapReduce程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据。清理的过程往往只需要运行Mapper程序,不需要运行Reduce程序。

1.需求

去除日志中字段长度小于等于11的日志。

(1)输入数据

web.log

(2)期望输出数据

每行字段长度都大于11

2.需求分析

需要在Map阶段对输入的数据根据规则进行过滤清洗。

3.实现代码

(1)编写LogMapper类

package com.atguigu.mapreduce.weblog;import java.io.IOException;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.NullWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;public class LogMapper extends Mapper{  Text k = new Text();  @Override  protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {   // 1 获取1行数据   String line = value.toString();   // 2 解析日志   boolean result = parseLog(line,context);   // 3 日志不合法退出   if (!result) {     return;   }   // 4 设置key   k.set(line);   // 5 写出数据   context.write(k, NullWritable.get());  }  // 2 解析日志  private boolean parseLog(String line, Context context) {   // 1 截取   String[] fields = line.split(" ");   // 2 日志长度大于11的为合法    if (fields.length > 11) {     // 系统计数器     context.getCounter("map", "true").increment(1);     return true;   }else {     context.getCounter("map", "false").increment(1);     return false;   }  }}
本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/fwq/web/4279.html
上一篇vsftpd用户禁止ssh登陆的实现方法
下一篇 详解如何解决docker容器无法通过IP访问宿主机问题
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部