数据清洗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的数量一致。

好的,下面是数据清洗ETL的步骤详细介绍: 1. 数据提取(Extract):从原始数据源中提取需要的数据,通常会使用数据抽取工具,例如 Sqoop、Flume 等,将数据从各种数据源如关系型数据库、文件等中读取出来。 2. 数据转换(Transform):对提取的数据进行转换处理,包括数据清洗、数据处理、数据过滤、数据合并、数据排序、数据聚合、数据抽样等操作,通常会使用 ETL 工具,例如 Kettle、Talend 等。 3. 数据加载(Load):将经过转换的数据加载到目标系统中,通常包括数据插入、更新、删除、替换等操作,目标系统可以是关系型数据库、数据仓库、Hadoop 等,通常会使用 ETL 工具进行数据加载。 4. 数据清洗(Clean):在数据转换的过程中,对于一些不符合标准的数据需要进行清洗,例如去除脏数据、重复数据、缺失数据等,确保数据的准确性和完整性。 5. 数据校验(Validate):在数据加载完成后,需要对数据进行校验,确保数据的正确性和一致性,例如对数据进行完整性检查、业务规则检查、数据格式检查等。 6. 数据整合(Integrate):在数据加载完成后,需要将所有的数据进行整合,通常会使用数据仓库等工具,将数据整合成一个统一的视图。 7. 数据管理(Manage):对于数据的管理包括数据备份、数据恢复、数据安全等,确保数据的安全性和稳定性。 以上就是数据清洗ETL的步骤详细介绍,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值