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

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;}}
}

四、测试

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

相关文章:

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

一、概念说明 “ETL&#xff0c;是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;、加载&#xff08;Load&#xff09;至目的端的过程。ETL一词较常用在数据仓库&#…...

python解锁图片相似度的神奇力量

在这个信息爆炸的时代,图片成为了我们传递信息、表达情感和记录生活的重要方式。然而,面对海量的图片资源,如何快速准确地找到相似的图片,成为了一个亟待解决的问题。现在,让我们为您揭开图片相似度的神秘面纱,带您领略这一创新技术的魅力! 图片相似度技术,就像是一位…...

TensorFlow 的原理与使用

文章目录 TensorFlow 的基本原理1. 计算图&#xff08;Computation Graph&#xff09;2. 张量&#xff08;Tensor&#xff09;3. 会话&#xff08;Session&#xff09;4. 自动微分&#xff08;Automatic Differentiation&#xff09; TensorFlow 的使用安装 TensorFlow基本使用…...

[数据库]事务的隔离级别存储引擎

事务的隔离级别 存储引擎 举例 myisam 进行回滚操作后可以发现有一个警告没有行受到影响 memory 比如用于qq的在线离线状态...

使用nvm切换node版本时报错:exit status 1解决办法

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…...

Kafka~高吞吐量设计

Kafka 之所以能够实现高性能和高速度&#xff0c;主要归因于以下几个关键因素&#xff1a; 分布式架构&#xff1a;Kafka 采用分布式架构&#xff0c;可以水平扩展&#xff0c;通过增加服务器节点来处理更多的流量和数据存储。顺序写入磁盘&#xff1a;Kafka 将消息顺序地写入…...

STM32小项目———感应垃圾桶

文章目录 前言一、超声波测距1.超声波简介2.超声波测距原理2.超声波测距步骤 二、舵机的控制三、硬件搭建及功能展示总结 前言 一个学习STM32的小白~ 有问题请评论区或私信指出 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、超声波测距 1.超声波…...

嵌入式MCU平台汇总

文章目录 1. 单片机&#xff08;MCU&#xff09; 2. 数字信号处理器&#xff08;DSP&#xff09; 3. ARM Cortex 系列 4. 超低功耗MCU 5. 物联网MCU&#xff08;IoT MCU&#xff09; 6. 开源架构MCU&#xff08;RISC-V&#xff09; 7. 可编程逻辑器件&#xff08;FPGA&a…...

C#udpClient组播

一、0udpClient 控件&#xff1a; button&#xff08;打开&#xff0c;关闭&#xff0c;发送&#xff09;&#xff0c;textbox&#xff0c;richTextBox 打开UDP&#xff1a; UdpClient udp: namespace _01udpClient {public partial class Form1 : Form{public Form1(){Initi…...

《昇思25天学习打卡营第14天 | 昇思MindSpore基于MindNLP+MusicGen生成自己的个性化音乐》

14天 本节学了基于MindNLPMusicGen生成自己的个性化音乐。 MusicGen是来自Meta AI的Jade Copet等人提出的基于单个语言模型的音乐生成模型&#xff0c;能够根据文本描述或音频提示生成高质量的音乐样本。 MusicGen模型基于Transformer结构&#xff0c;可以分解为三个不同的阶段…...

新奥集团校招面试经验分享、测评笔试题型分析

一、走进新奥集团 新奥集团成立于1989年&#xff0c;总部位于河北廊坊&#xff0c;是中国领先的清洁能源企业集团。业务涵盖城市燃气、能源化工、环保科技等多个领域&#xff0c;致力于构建现代能源体系&#xff0c;提升生活品质。 二、新奥集团校招面试经验分享 新奥集团的…...

【推荐】Prometheus+Grafana企业级监控预警实战

新鲜出炉&#xff01;&#xff01;&#xff01;PrometheusGrafanaAlertmanager springboot 企业级监控预警实战课程&#xff0c;从0到1快速搭建企业监控预警平台&#xff0c;实现接口调用量统计&#xff0c;接口请求耗时统计…… 详情请戳 https://edu.csdn.net/course/detai…...

深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径

文章目录 一、分批渲染1、setTimeout定时器分批渲染2、使用requestAnimationFrame()改进渲染2.1、什么是requestAnimationFrame2.2、为什么使用requestAnimationFrame而不是setTimeout或setInterval2.3、requestAnimationFrame的优势和适用场景 二、滚动触底加载数据三、Elemen…...

AI时代,你的工作会被AI替代吗?

AI在不同领域的应用和发展速度是不同的。在智商方面&#xff0c;尤其是在逻辑推理、数据分析和模式识别等领域&#xff0c;AI已经取得了显著的进展。例如&#xff0c;在国际象棋、围棋等策略游戏中&#xff0c;AI已经能够击败顶尖的人类选手。在科学研究、医学诊断、股市分析等…...

Java_日志

日志技术 可以将系统执行的信息&#xff0c;方便的记录到指定的位置(控制台、文件中、数据库中) 可以随时以开关的形式控制日志启停&#xff0c;无需侵入到源代码中去进行修改。 日志技术的体系结构 日志框架&#xff1a;JUL、Log4j、Logback、其他实现。 日志接口&#xf…...

springcould-config git源情况下报错app仓库找不到

在使用spring config server服务的时候发现在启动之后的一段时间内控制台会抛出异常&#xff0c;spring admin监控爆红&#xff0c;控制台信息如下 --2024-06-26 20:38:59.615 - WARN 2944 --- [oundedElastic-7] o.s.c.c.s.e.JGitEnvironmentRepository : Error occured …...

MySQL serverTimezone=UTC

在数据库连接字符串中使用 serverTimezoneUTC 是一个常见的配置选项&#xff0c;特别是当数据库服务器和应用程序服务器位于不同的时区时。这个选项指定了数据库服务器应当使用的时区&#xff0c;以确保日期和时间数据在客户端和服务器之间正确传输和处理。 UTC&#xff08;协…...

基于YOLOv9的PCB板缺陷检测

数据集 PCB缺陷检测&#xff0c;我们直接采用北京大学智能机器人开放实验室数据提供的数据集&#xff0c; 共六类缺陷 漏孔、鼠咬、开路、短路、杂散、杂铜 已经对数据进行了数据增强处理&#xff0c;同时按照YOLO格式配置好&#xff0c;数据内容如下 模型训练 ​ 采用YOLO…...

高考结束,踏上西北的美食之旅

高考的帷幕落下&#xff0c;暑期的阳光洒来&#xff0c;是时候放下书本&#xff0c;背上行囊&#xff0c;踏上一场充满期待的西北之旅。而在甘肃这片广袤的土地上&#xff0c;除了壮丽的自然风光&#xff0c;还有众多令人垂涎欲滴的美食等待着您的品尝。当您踏入甘肃&#xff0…...

人工智能 (AI) 在能源系统中应用的机会和风险

现代文明极度依赖于电力的获取。电力系统支撑着我们视为理所当然的几乎所有基本生活功能。没有电力的获取&#xff0c;大多数经济活动将是不可能的。然而&#xff0c;现有的电网系统并未设计来应对当前——更不用说未来的——电力需求。与此同时&#xff0c;气候变化迫切要求我…...

code2prompt:AI编程助手的高效代码上下文生成工具详解

1. 项目概述&#xff1a;从代码到提示词的“翻译官”最近在折腾一些AI辅助编程或者代码分析的工具时&#xff0c;我经常遇到一个头疼的问题&#xff1a;如何把我手头的一大段项目代码&#xff0c;高效、准确地“喂”给像ChatGPT、Claude或者GitHub Copilot这样的AI助手&#xf…...

Promises/A+性能优化指南:让你的异步代码运行得更快

Promises/A性能优化指南&#xff1a;让你的异步代码运行得更快 【免费下载链接】promises-spec An open standard for sound, interoperable JavaScript promises—by implementers, for implementers. 项目地址: https://gitcode.com/gh_mirrors/pr/promises-spec 在Ja…...

基于LLM与LangChain的智能项目管理Agent:架构设计与工程实践

1. 项目概述&#xff1a;一个面向项目管理的智能体框架 最近在开源社区里&#xff0c;我注意到一个名为 gannonh/agent-pm 的项目开始受到一些关注。乍一看这个名字&#xff0c;你可能会联想到“项目经理”或者“项目管理”&#xff0c;没错&#xff0c;这个项目的核心定位&…...

赣州威视智投GEO优化服务

在数字化浪潮席卷的当下&#xff0c;赣州本地商家面临着线上曝光不足、流量少、排名靠后的经营难题。如何在激烈的市场竞争中脱颖而出&#xff0c;实现精准获客与稳定引流&#xff0c;成为众多商家亟待解决的问题。赣州威视智投科技有限公司&#xff08;以下简称“威视智投”&a…...

FPGA开发板GT远端环回测试:原理、配置与调试实战指南

1. 项目概述&#xff1a;为什么我们需要在开发板上做GT远端环回测试&#xff1f;如果你是一位硬件工程师或者FPGA开发者&#xff0c;最近正在调试一块带有高速串行收发器&#xff08;比如Xilinx的GTX/GTH/GTY&#xff0c;或者Intel的Transceiver&#xff09;的开发板&#xff0…...

终极raylib游戏开发指南:如何在3天内从零到一创建跨平台游戏

终极raylib游戏开发指南&#xff1a;如何在3天内从零到一创建跨平台游戏 【免费下载链接】raylib A simple and easy-to-use library to enjoy videogames programming 项目地址: https://gitcode.com/GitHub_Trending/ra/raylib raylib是一个简单易用的轻量级游戏编程库…...

GitHub开源项目法律合规自动化:exoclaw-github的设计与实现

1. 项目概述&#xff1a;一个为GitHub仓库定制的“法律条款”守护者最近在开源社区里折腾&#xff0c;发现一个挺有意思的现象&#xff1a;很多开发者辛辛苦苦维护的项目&#xff0c;因为缺少清晰、合规的贡献者协议或开源许可证&#xff0c;导致后续在代码合并、版权归属甚至商…...

调试效率翻倍:在VSCode里实时查看PY32的RTT日志(JLink OB就行)

嵌入式开发效率革命&#xff1a;VSCode集成JLink RTT日志全攻略 1. 嵌入式开发者的效率痛点与解决方案 在嵌入式开发领域&#xff0c;调试信息的输出一直是影响开发效率的关键环节。传统方式通常需要依赖串口输出&#xff0c;开发者不得不在多个工具间频繁切换——编写代码时使…...

你还在用自然语言写MJ提示词?专业级结构化提示词已进入Token级编排时代:详解::权重、--no冲突域、[]嵌套层级与多模态对齐原理

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;自然语言提示词的局限性与结构化范式跃迁 传统自然语言提示&#xff08;Prompt&#xff09;虽具备易用性和低门槛优势&#xff0c;但在复杂任务中暴露出显著瓶颈&#xff1a;语义模糊性、上下文敏感性弱…...

基于CircuitPython与Adafruit CLUE的创意灵感生成器开发指南

1. 项目概述&#xff1a;用硬件激发创意的火花你有没有过这样的时刻——面对空白的画布、闪烁的光标&#xff0c;或者一堆零散的电子元件&#xff0c;脑子里却一片空白&#xff0c;急需一个点子来点燃创作的引擎&#xff1f;这种“创意阻塞”几乎是每个创作者都会遇到的难题。传…...