Hadoop-MapReduce计数器和数据清洗

迈不过友情╰ 2022-10-18 13:00 300阅读 0赞

计数器应用

在这里插入图片描述

数据清洗(ETL)

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

简单实操(实际使用会复杂的多,但是基本处理是一致的):

目的:去除日志中字段单词数小于等于20的日志

日志文件中最后一行数据为

在这里插入图片描述

本日志文件有82428行数据。

期望输出的数据:每行字段单词数均大于20;

分析:在Map阶段对输入的数据根据规则进行过滤清洗

Mapper

  1. public class DataCleanMapper extends Mapper<LongWritable, Text, Text, NullWritable> {
  2. @Override
  3. protected void map (LongWritable key, Text value, Context context) throws IOException, InterruptedException {
  4. String line = value.toString();
  5. // 解析数据
  6. boolean result = parseLog(line, context);
  7. if (!result) {
  8. return;
  9. }
  10. context.write(value, NullWritable.get());
  11. }
  12. private boolean parseLog (String line, Context context) {
  13. String[] fileds = line.split(" ");
  14. if (fileds.length > 20) {
  15. // 引入计数器
  16. context.getCounter("map-data-clean", "true").increment(1);
  17. return true;
  18. }
  19. context.getCounter("map-data-clean", "false").increment(1);
  20. return false;
  21. }
  22. }

Driver中需要将ReduceTask数量设置为0

  1. // 设置reduceTask的数量为0
  2. job.setNumReduceTasks(0);

运行之后,查看计数器如下:

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,300人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ETL数据清洗

    ![45197bba580040bfb64f3e7562cc9ea4.png][] 大多[数据仓库][Link 1]的数据架构可以概括为: 数据源-->ODS(操作型数据存

    相关 数据清洗

    1.数据错误: 错误类型 – 脏数据或错误数据 • 比如, Age = -2003 – 数据不正确 • ‘0’ 代表真实的0,还是代表缺失 – 数据不一致

    相关 SPSS数据清洗

    SPSS数据清洗 关于spss对数据的清洗,就是将多余重复的数据筛选清楚,将确实的数据补充完整,将错误的数据纠正活删除。 下面主要内容是关于最常用的重复数据操作: 首