当前位置: 首页 > ds >正文

数据清洗ETL

ETL介绍

“ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

在Transform的过程中,我们经常会做数据清洗这个操作。它是指对采集到的原始数据进行预处理,以去除错误、重复、不完整或不一致的数据,使数据符合分析要求的过程。它在整个数据分析和数据处理流程中处于非常重要的位置,因为数据质量的好坏直接影响到后续分析结果的准确性和可靠性。

清理的过程往往只需要运行Mapper程序,不需要运行Reduce程序。

实现代码

在之前的项目的基础之上,重写去写一个包,并创建两个类:WebLogMapper和WebLogDriver类。

(1)编写WebLogMapper类

package com.root.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 WebLogMapper extends Mapper<LongWritable, Text, Text, NullWritable>{

@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
    // 1. 获取一行数据,使用空格进行拆分,判断是否有8个字段
    String[] fields = value.toString().split(" ");
    if (fields.length > 7) {
        // 这条数据是有意义的,保留
        System.out.println(fields[0]);
        context.write(value, NullWritable.get());
    }
   }

}

代码说明:NullWritable就等价于null,context.write(value,NullWritable.get())就表示只有key,没有value。

(2)编写WebLogDriver类

package com.root.mapreduce.weblog;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.NullWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WebLogDriver {

public static void main(String[] args) throws Exception {        

// 1 获取job信息

Configuration conf = new Configuration();

Job job = Job.getInstance(conf);

// 2 加载jar包

job.setJarByClass(LogDriver.class);

// 3 关联map

job.setMapperClass(WebLogMapper.class);

// 4 设置最终输出类型

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(NullWritable.class);

// 设置reducetask个数为0

job.setNumReduceTasks(0);

// 5 设置输入和输出路径
         FileInputFormat.setInputPaths(job, new Path("E:\\vm\\web.log"));
         FileOutputFormat.setOutputPath(job, new Path("E:\\vm\\ouput2"));

// 6 提交

         boolean b = job.waitForCompletion(true);

         System.exit(b ? 0 : 1);

}

}

代码说明:reduceTask为0,表示没有reduce阶段,程序会根据Map函数的结果把内容输出。最终输出的文件个数与mapperTask的数量一致。

http://www.xdnf.cn/news/6200.html

相关文章:

  • 【Python 算法零基础 2.模拟 ④ 基于矩阵】
  • 【starrocks】StarRocks 常见 HTTP 操作与导入错误排查指南
  • 数值积分知识
  • MK米客方德SD NAND:无人机存储的高效解决方案
  • Qwen-3 模型的应用及实际用例
  • 面向具身智能的视觉-语言-动作模型(VLA)综述
  • 大数据开发 hadoop集群 3.Hadoop运行环境搭建
  • 【Linux】第十六章 分析和存储日志
  • voip--初始化libosip2库
  • 首个专业AI设计Agent发布-Lovart
  • nvrtc环境依赖
  • C++类和对象之相关特性
  • 养猪场巡检机器人的设计与应用研究
  • Python环境管理工具深度指南:pip、Poetry、uv、Conda
  • Vue3学习(组合式API——Watch侦听器详解)
  • Large-Scale Language Models: In-Depth Principles and Pioneering Innovations
  • 输入一个正整数,将其各位数字倒序输出(如输入123,输出321)
  • 基于GPUGEEK 平台进行深度学习
  • 昆士兰科技大学无人机自主导航探索新框架!UAVNav:GNSS拒止与视觉受限环境中的无人机导航与目标检测
  • [学习] RTKLib详解:rtcm2.c、rtcm3.c、rtcm3e与rtcmn.c
  • 阿里云Docker镜像加速配置指南
  • Nginx配置与应用案例详解
  • 深圳无人机展览即将开始,无人机舵机为什么选择伟创动力
  • Single image dehazing论文阅读
  • 鸿蒙OSUniApp 实现的语音输入与语音识别功能#三方框架 #Uniapp
  • Python----神经网络(《Searching for MobileNetV3》论文概括和MobileNetV3网络)
  • Qt原型模式实现与应用
  • auto.js面试题及答案
  • python如何合并excel单元格
  • 在Spark搭建YARN