數據清洗的具體內容

ETL介紹

“ETL,是英文Extract-Transform-Load的縮寫,用來描述將數據從來源端經過抽取(Extract)、轉換(Transform)、加載(Load)至目的端的過程。ETL一詞較常用在數據倉庫,但其對象并不限于數據倉庫

在Transform的過程中,我們經常會做數據清洗這個操作。它是指對采集到的原始數據進行預處理,以去除錯誤、重復、不完整或不一致的數據,使數據符合分析要求的過程。它在整個數據分析和數據處理流程中處于非常重要的位置,因為數據質量的好壞直接影響到后續分析結果的準確性和可靠性。

清理的過程往往只需要運行Mapper程序,不需要運行Reduce程序。

)需求分析

我們有去除日志中字段個數于等于11的日志。

(1)輸入數據

(2)期望輸出數據:每行字段長度都大于11。

需要在Map階段對輸入的數據根據規則進行過濾清洗,并不需要進行匯總。

思路分析

map階段:按行讀入內容,對內容進行檢查,如果字段的個數少于等于11,就刪除這條日志(不保留)去除日志中字段個數小于等于11的日志內容

對于map函數來說,它的輸入參數是:<偏移量,第一行的內容>

<偏移量,每一行的內容> → <刷選后的沒一行的內容,null>

對于reduce函數來說,它的輸入參數是:<刷選后的每一行的內容,[null,null,...]>,對于我們的需求來說,并不需要這個階段。

實現代碼

在之前的項目的基礎之上,重寫去寫一個包,并創建兩個類: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());
????} else {
????????// 這條數據是無意義的,不保留
????????return;
????}
}

}

  1. 編寫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階段,那么最終輸出的文件個數與mapperTask的數量一致。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74337.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74337.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74337.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【動手學深度學習】#7 現代卷積神經網絡

主要參考學習資料&#xff1a; 《動手學深度學習》阿斯頓張 等 著 【動手學深度學習 PyTorch版】嗶哩嗶哩跟李牧學AI 概述 硬件性能和大數據的發展為深度卷積神經網絡&#xff08;AlexNet&#xff09;的實現提供了條件。VGG首次將塊的思想用于搭建網絡。NiN將多層感知機應用在…

Jenkins + CICD流程一鍵自動部署Vue前端項目(保姆級)

git倉庫地址&#xff1a;參考以下代碼完成,或者采用自己的代碼。 南澤/cicd-test 拉取項目代碼到本地 使用云服務器或虛擬機采用docker部署jenkins 安裝docker過程省略 采用docker部署jenkins&#xff0c;注意這里的命令&#xff0c;一定要映射docker路徑&#xff0c;否則無…

使用 libevent 處理 TCP 粘包問題(基于 Content-Length 或雙 \r\n)

在基于 libevent 的 TCP 服務器開發中,處理消息邊界是常見需求。以下是兩種主流分包方案的完整實現: 一、基于 Content-Length 的分包方案 1.1 數據結構設計 typedef struct {struct bufferevent *bev;int content_length; // 當前消息的預期長度int received_bytes; //…

酶動力學預測工具CataPro安裝教程

簡介&#xff1a;預測酶動力學參數是酶發現和酶工程中的一項重要任務。在此&#xff0c;研究人員基于蛋白質語言模型、小分子語言模型和分子指紋&#xff0c;提出了一種名為 CataPro 的新酶動力學參數預測算法。該研究從 BRENDA 和 SABIO-RK 數據庫中收集了最新的轉化率&#x…

項目實戰:基于Spring WebFlux與LangChain4j實現大語言模型流式輸出

一、背景 在大語言模型&#xff08;LLM&#xff09;應用場景中&#xff0c;GPT-4等模型的響應生成往往需要數秒至數十秒的等待時間。傳統同步請求會導致用戶面對空白頁面等待&#xff0c;體驗較差。本文通過Spring WebFlux響應式編程與SSE服務器推送技術&#xff0c;實現類似打…

Go語言入門經典:數組與切片詳解

Go語言入門經典&#xff1a;數組與切片詳解 數組和切片是Go語言中兩種重要的數據結構。數組是一種固定長度的集合&#xff0c;而切片則是一種靈活的動態集合。本章將詳細講解數組和切片的定義、初始化、訪問元素、動態操作等內容&#xff0c;幫助讀者全面掌握這兩種數據結構。…

uniapp中如何用iconfont來管理圖標集成到我們開發的項目中

我們在開發不管小程序還是APP的過程中都會用到圖標這個東西,那么iconfont提供了對應的功能,怎么才能方便的集成到我們的小程序或者APP項目中,目標是方便調用并且方便管理。 首先注冊ICONFONT賬號 www.iconfont.cn中去注冊即可選擇我們需要的圖標如下 我們搜索我們需要的圖…

從實用的角度聊聊Linux下文本編輯器VIM

本文從實用的角度聊聊Vim的常用命令。何為實用&#xff1f;我舉個不實用的例子大家就明白了&#xff0c;用vim寫代碼。;) “vim是從 vi 發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富&#xff0c;在程序員中被廣泛使用&#xff0c;和Emacs并列成…

優化程序命名:提升專業感與用戶體驗

在軟件開發的廣闊天地中&#xff0c;程序命名這一環節常常被開發者們忽視。不少程序沿用著簡單直白、缺乏雕琢的名字&#xff0c;如同素面朝天的璞玉&#xff0c;雖不影響其核心功能的發揮&#xff0c;但卻在無形之中錯失了許多提升用戶印象與拓展應用場景的機會。今天&#xf…

LeetCode BFS解決最短路問題

廣度優先搜索(BFS, Breadth-First Search)是一種用于圖和樹結構的遍歷算法&#xff0c;特別適合解決無權圖的最短路徑問題。 算法思想&#xff1a; BFS從起始節點開始&#xff0c;按照"廣度優先"的原則&#xff0c;逐層向外擴展搜索&#xff1a; 先訪問起始節點的…

[物聯網iot]對比WIFI、MQTT、TCP、UDP通信協議

第一步&#xff1a;先理解最基礎的關系&#xff08;類比快遞&#xff09; 假設你要給朋友寄快遞&#xff1a; Wi-Fi&#xff1a;相當于“公路和卡車”&#xff0c;負責把包裹從你家運到快遞站。 TCP/UDP&#xff1a;相當于“快遞公司的運輸規則”。 TCP&#xff1a;順豐快遞&…

基于python的電影數據分析及可視化系統

一、項目背景 隨著電影行業的快速發展&#xff0c;電影數據日益豐富&#xff0c;如何有效地分析和可視化這些數據成為行業內的一個重要課題。本系統旨在利用Python編程語言&#xff0c;結合數據分析與可視化技術&#xff0c;為電影行業從業者、研究者及愛好者提供一個便捷的電…

Java8 到 Java21 系列之 Lambda 表達式:函數式編程的開端(Java 8)

Java8 到 Java21 系列之 Lambda 表達式&#xff1a;函數式編程的開端&#xff08;Java 8&#xff09; 系列目錄 Java8 到 Java21 系列之 Lambda 表達式&#xff1a;函數式編程的開端&#xff08;Java 8&#xff09;Java 8 到 Java 21 系列之 Stream API&#xff1a;數據處理的…

②EtherCAT/Ethernet/IP/Profinet/ModbusTCP協議互轉工業串口網關

型號 協議轉換通信網關 EtherCAT 轉 Modbus TCP 配置說明 網線連接電腦到模塊上的 WEB 網頁設置網口&#xff0c;電腦所連網口的網段設置成 192.168.1.X&#xff08;X 是除 8 外的任一數值&#xff09;后&#xff0c;打開瀏覽器&#xff0c;地址欄輸入 192.168.1.8 &#xff…

機器視覺--python基礎語法

Python基礎語法 1. Python標識符 在 Python 里&#xff0c;標識符由字母、數字、下劃線組成。 在 Python 中&#xff0c;所有標識符可以包括英文、數字以及下劃線(_)&#xff0c;但不能以數字開頭。 Python 中的標識符是區分大小寫的。 以下劃線開頭的標識符是有特殊意義的…

算法日常記錄

1. 鏈表 1.1 刪除鏈表的倒數第 N 個結點 問題描述&#xff1a;給你一個鏈表&#xff0c;刪除鏈表的倒數第 n 個結點&#xff0c;并且返回鏈表的頭結點。 輸入&#xff1a;head [1,2,3,4,5], n 2 輸出&#xff1a;[1,2,3,5] 思路&#xff1a;先讓fast跑n步&#xff0c;然后…

14使用按鈕實現helloworld(1)

目錄 還可以通過按鈕的方式來創建 hello world 涉及Qt 中的信號槽機制本質就是給按鈕的點擊操作,關聯上一個處理函數當用戶點擊的時候 就會執行這個處理函數 connect&#xff08;誰發的信號&#xff0c; 信號類型&#xff0c; 誰來處理這個信息&#xff0c; 怎么處理的&…

【Golang】泛型與類型約束

文章目錄 一、環境二、沒有泛型的Go三、泛型的優點四、理解泛型&#xff08;一&#xff09;泛型函數&#xff08;Generic function&#xff09;1&#xff09;定義2&#xff09;調用 &#xff08;二&#xff09;類型約束&#xff08;Type constraint&#xff09;1&#xff09;接…

k8s常用總結

1. Kubernetes 架構概覽 主節點&#xff08;Master&#xff09;&#xff1a; 負責集群管理&#xff0c;包括 API Server、Controller Manager、Scheduler 和 etcd 存儲。 工作節點&#xff08;Node&#xff09;&#xff1a; 運行 Pod 和容器&#xff0c;包含 kubelet、kube-pr…

Android 單例模式全解析:從基礎實現到最佳實踐

單例模式&#xff08;Singleton Pattern&#xff09;是軟件開發中常用的設計模式&#xff0c;其核心是確保一個類在全局范圍內只有一個實例&#xff0c;并提供全局訪問點。在 Android 開發中&#xff0c;單例模式常用于管理全局資源&#xff08;如網絡管理器、數據庫助手、配置…