Hadoop3:MapReduce中的ETL(数据清洗)

一、概念说明

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库
在运行核心业务MapReduce程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据
清理的过程往往只需要运行Mapper程序,不需要运行Reduce程序。

Java做过3年以上的,应该都知道,这就是过滤数据。
过滤数据,肯定要用到正则表达式

二、需求说明

日志文件
在这里插入图片描述在这里插入图片描述
去除日志中字段个数小于等于11的日志。

三、代码实现

WebLogDriver

package com.atguigu.mapreduce.etl;import com.atguigu.mapreduce.outputformat.LogDriver;
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 {// 输入输出路径需要根据自己电脑上实际的输入输出路径设置args = new String[]{"D:/input/inputlog", "D:/hadoop/output11111"};// 1 获取job信息Configuration conf = new Configuration();Job job = Job.getInstance(conf);// 2 加载jar包job.setJarByClass(LogDriver.class);// 3 关联mapjob.setMapperClass(WebLogMapper.class);// 4 设置最终输出类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(NullWritable.class);// 设置reducetask个数为0job.setNumReduceTasks(0);// 5 设置输入和输出路径FileInputFormat.setInputPaths(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));// 6 提交boolean b = job.waitForCompletion(true);System.exit(b ? 0 : 1);}}

WebLogMapper

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;public class WebLogMapper extends Mapper<LongWritable, Text, Text, NullWritable> {@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {// 1 获取一行String line = value.toString();// 2 ETLboolean result = parseLog(line, context);if (!result){return;}// 3 写出context.write(value, NullWritable.get());}private boolean parseLog(String line, Context context) {// 切割// 1.206.126.5 - - [19/Sep/2013:05:41:41 +0000] "-" 400 0 "-" "-"String[] fields = line.split(" ");// 2 判断一下日志的长度是否大于11if (fields.length > 11){return true;}else {return false;}}
}

四、测试

在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/34965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python学习 - 设计模式 - 状态模式

大话设计模式 设计模式——状态模式 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为&#xff0c;这个对象看起来像是改变了其类 应用场景:当控制一个对象的状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的…

LED显示屏的点间距越小越好吗

引言 在LED显示屏市场日趋成熟的同时&#xff0c;小间距显示屏成为了许多用户的首选。然而&#xff0c;点间距真的是越小越好吗&#xff1f;本文将探讨这一问题&#xff0c;并提供全面的选购指南。 点间距&#xff1a;并非越小越好 小间距显示屏因其精细的显示效果而备受青睐。…

剪辑如何剪辑制作视频短视频剪辑学习怎么学,难吗?

工欲善其事必先利其器&#xff0c;有一个好的工具能让你的工作如鱼得水&#xff0c;果你想在短视频中制作精良的视频&#xff0c;你就考虑电脑制作软件了。果你想制作精良的视频&#xff0c;你就考虑电脑制作软件了。 如何找到剪辑软件了&#xff1f;你可以直接去软件的官方。你…

KT6368A-sop8蓝牙主机芯片获取电动车胎压传感器数据功能

KT6368A蓝牙芯片新增主机模式&#xff0c;扫描周边的胎压传感器&#xff0c;这里扮演的角色就是观察者。因为测试胎压传感器&#xff0c;发现它的广播模式可发现&#xff0c;不可连接 胎压传感器部分的手册说明如下&#xff0c;关于蓝牙部分的协议 实际蓝牙芯片收到的数据&…

国密算法SM1 SM2 SM3 SM4 SM9

一、概述 SM1-无具体实现 SM1作为一种对称加密算法&#xff0c;由于其算法细节并未公开&#xff0c;且主要在中国国内使用&#xff0c;因此在国际通用的加密库&#xff08;如Bouncy Castle&#xff09;中并不直接支持SM1算法。 SM1算法的具体实现涉及国家密码管理局的规范&…

Studying-代码随想录训练营day20| 235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

第二十天&#xff0c;二叉树part07&#xff0c;二叉树搜索树加油加油&#x1f4aa; 目录 235.二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点 拓展&#xff1a;普通二叉树的删除方式 总结 235.二叉搜索树的最近公共祖先 文档讲解&…

洁净室(区)浮游菌检测标准操作规程及GB/T 16292-2010测试方法解读

洁净室(区)空气中浮游菌的检测。洁净区浮游菌检测是一种评估和控制洁净区(如实验室、生产车间等)内空气质量的方法。这种检测的目的是通过测量空气中的微生物(即浮游菌)数量&#xff0c;来评估洁净区的清洁度或污染程度。下面中邦兴业小编带大家详细看下如何进行浮游菌采样检测…

RK3568技术笔记九 编译Linux详细介绍

在编译前需要按照前面的方法始化编译环境&#xff0c;否则会导致编译失败&#xff08;若配置过则无需重复配置&#xff09;。 全自动编译包含所有镜像编译&#xff0c;包括&#xff1a;uboot编译、Kernel编译、Recovey编译、文件系统编译、编译完成镜像的更新与打包。 按照前面…

阅读笔记——《Large Language Model guided Protocol Fuzzing》

【参考文献】Meng R, Mirchev M, Bhme M, et al. Large language model guided protocol fuzzing[C]//Proceedings of the 31st Annual Network and Distributed System Security Symposium (NDSS). 2024.&#xff08;CCF A类会议&#xff09;【注】本文仅为作者个人学习笔记&a…

【附精彩文章合辑】当谈到程序的“通用性”与“过度设计”的困境时,我们可以通过一些具体的例子来更直观地阐述这些解决方案

当谈到程序的“通用性”与“过度设计”的困境时&#xff0c;我们可以通过一些具体的例子来更直观地阐述这些解决方案。以下是一些示例&#xff1a; 一、明确需求与目标 例子1&#xff1a;在线购物平台 需求分析&#xff1a;平台需要支持用户注册、登录、浏览商品、下单购买、…

2024ciscn 华东北awdp pwn部分wp

pwn1 break 很简单&#xff0c;栈可执行。 先格式化字符串泄露出栈地址和canary&#xff0c;然后稍稍布置一下打orw就行 沙盒和没有一样 from pwn import *context(archamd64, oslinux)if __name__ __main__:# io remote(192.47.1.39, 80)io remote(192.168.142.137, 123…

初阶 《操作符详解》 10. 逗号表达式

10. 逗号表达式 exp1, exp2, exp3, …expN 注&#xff1a; 1.逗号表达式&#xff0c;就是用逗号隔开的多个表达式 2.逗号表达式&#xff0c;从左向右依次执行&#xff0c;整个表达式的结果是最后一个表达式的结果 代码1 #include <stdio.h> int main() {int a 1;int b…

【Qt6.3 基础教程 19】 设计直观用户界面(UI):Qt应用界面设计原则

文章目录 前言理解用户需求界面的简洁性一致性反馈利用布局管理美化你的应用结论 前言 用户界面(UI)设计对于任何软件项目的成功至关重要&#xff0c;因为它是用户与您的应用之间交流的桥梁。在Qt环境中&#xff0c;拥有一套清晰和直观的UI设计原则&#xff0c;将有助于您创建…

解决ubuntu18.04 安装vscode 报依赖库错误,以及打不开终端的问题。

其实很简单&#xff0c;ubuntu18.04太老了&#xff0c;官网最新版本的vscode对ubuntu18.04会有些依赖库的问题。 一顿查资料后发现2023.11月的1.85版本正常使用&#xff0c;于是完美解决。 下载链接 Visual Studio Code November 2023 点击这里下载。 下载完成&#xff0c;…

golang 获取字符串切割之后的最后一个字符串

有些场景需要获取字符串按某个字符切割之后&#xff0c;获取最后&#xff0c;有个比较好的实践分享 strings.LastIndex 如果没有匹配到&#xff0c;则返回-1 package mainimport ("fmt""strings" )func main() {ss : []string{"", ":&quo…

数据结构需要每个都具体实现吗?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「数据结构的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;用c的stl能刷算法题是不…

【INTEL(ALTERA)】运行配置找不到导入的自定义 makefile 项目

目录 说明 解决方法 说明 在使用 Import Custom Makefile 用于Nios II软件构建工具项目 选项导入项目后&#xff0c;Nios II SBT 无法将导入的自定义 makefile 识别为Nios II C/C 应用项目。因此&#xff0c;项目名称不出现在运行配置中的列表中。 解决方法 在 "运行配置 …

clean code-代码整洁之道 阅读笔记(第十三章)

第十三章 并发编程 "对象是过程的抽象。线程是调度的抽象。" --James O Coplien 13.1 为什么要并发 并发是一种解耦策略。它帮助我们把做什么&#xff08;目的&#xff09;和何时&#xff08;时机&#xff09;做分解开。在单线 程应用中&#xff0c;目的与时机紧密耦…

【OpenCV 图像处理 Python版】OpenCV 简介及安装

文章目录 1.OpenCV 介绍1.1 OpenCV 的特点1.2 OpenCV 的主要模块1.3 OpenCV 的应用场景 2.OpenCV-Python 库3.OpenCV 安装 1.OpenCV 介绍 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它由英特尔公司于1999年…

API的优势及应用场景(淘宝API测试的详细步骤)

一、API的优势 API的出现为应用程序间的通信提供了一种新的方式&#xff0c;它有以下优势&#xff1a; 1、降低开发难度 开发者可以通过API访问其他应用程序的数据和功能&#xff0c;避免了重复开发&#xff0c;降低了开发难度。 2、提高开发效率 API提供了一种标准化的通…