數據預處理

數據預處理

  • 引入
  • 一.配置java , hadoop , maven的window本機環境變量
    • 1.配置
    • 2.測試是否配置成功
  • 二.創建一個Maven項目
  • 三.導入hadoop依賴
  • 四.數據清洗
    • 1.數據清洗的java代碼
    • 2.查看數據清洗后的輸出結果

引入

做數據預處理 需要具備的條件 : java,hadoop,maven環境以及idea軟件

一.配置java , hadoop , maven的window本機環境變量

1.配置

  • 本機的設置/高級系統設置/環境變量
    在這里插入圖片描述
  • 在系統變量中配置文件的路徑
  • 我是在用戶變量和系統變量中都做配置了
  • 用戶變量和系統變量的區別是什么呢?
    環境變量包括了用戶變量和系統變量
    它倆的關系簡言之就是 系統變量包括用戶變量 , 也就是 , 如果你配置了系統變量 , 那么其配置在用戶變量中也是有效的
    而我們都知道 , 一個系統可以同時有多個用戶 , 所以用戶變量是只在當前用戶環境下有效的
    一般,在沒有特殊要求的情況下,只配置系統變量就夠了

在這里插入圖片描述

例如我的maven文件的路徑如下 :
在這里插入圖片描述
雙擊Path
新建
輸入 : %HADOOP_HOME%\bin 這個格式的(注意名稱與上面配置路徑的名稱相同即可)
下圖只有hadoop和maven的
在這里插入圖片描述

2.測試是否配置成功

win+R 輸入 cmd
輸入下面命令 , 有版本號顯示 , 則說明環境配置成功
java -version
hadoop version
mvn -version
在這里插入圖片描述

二.創建一個Maven項目

在這里插入圖片描述
在這里插入圖片描述

三.導入hadoop依賴

<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.7.3</version>
</dependency>

在這里插入圖片描述

把剛剛環境配置的hadoop文件中的hadoop/etc/hadoop/log4j.propertities文件移動到resources中
在這里插入圖片描述

四.數據清洗

在 /usr/data文件下創建一個新文件夾log(用來存儲日志文件)
[root@hadoop ~]# cd /usr/
[root@hadoop usr]# ls
bin data etc games include lib lib64 libexec local sbin share soft src tmp
[root@hadoop usr]# cd data/
[root@hadoop data]# ls
student.txt
[root@hadoop data]# mkdir log
[root@hadoop data]# ls
log student.txt
[root@hadoop data]# cd log/

在這里插入圖片描述

[root@hadoop log]# ls
access_2013_05_30.log access_2013_05_31.log

[root@hadoop log]# hdfs dfs -put access_2013_05_30.log / //上傳到hdfs中

1.數據清洗的java代碼

//日志解析類

package com.stu.log;import sun.rmi.runtime.Log;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Locale;/*** 日志解析類*/
public class LogParser {public static final SimpleDateFormat FORMAT = new SimpleDateFormat("d/MMM/yyyy:HH:mm:ss", Locale.ENGLISH);// yyyyMMddHHmmsspublic static final SimpleDateFormat dateformat1 = new SimpleDateFormat("yyyyMMddHHmmss");// 解析英文時間字符串private Date parseDateFormat(String string){Date parse = null;try {parse = FORMAT.parse(string);} catch (ParseException e) {e.printStackTrace();}return parse;}/*** 解析日志的行記錄* @param line* @return*/public String[] parse(String line){String s = parseIp(line);String s1 = parseTime(line);String s2 = parseURL(line);String s3 = parseStatus(line);String s4 = parseTraffic(line);return new String[]{s,s1,s2,s3,s4};}private String parseTraffic(String line){String trim = line.substring(line.lastIndexOf("\"") + 1).trim();String traffic = trim.split(" ")[1];return traffic;}private String parseStatus(String line){String substring = line.substring(line.lastIndexOf("\"") + 1).trim();String status = substring.split(" ")[0];return status;}private String parseURL(String line){int i = line.indexOf("\"");int i1 = line.lastIndexOf("\"");String substring = line.substring(i + 1, i1);return substring;}private String parseTime(String line){int i = line.indexOf("[");int i1 = line.indexOf("+0800");String trim = line.substring(i + 1, i1).trim();Date date = parseDateFormat(trim);return dateformat1.format(date);}private String parseIp(String line){String trim = line.split("- -")[0].trim();return trim;}}

map和reduce


package com.stu.log;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 org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;public class LogMapper extends Mapper<LongWritable,Text,LongWritable, Text> {private LogParser lp = new LogParser();private Text outPutValue = new Text();@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {String[] parse = lp.parse(value.toString());// Step1. 過濾掉靜態資源訪問請求if(parse[2].startsWith("GET /static/") || parse[2].startsWith("GET /uc_server")){return;}// Step2. 過濾掉開頭為GET 和 POSTif(parse[2].startsWith("GET /")){parse[2] = parse[2].substring("GET /".length());}else if(parse[2].startsWith("POST /")){parse[2] = parse[2].substring("POST /".length());}// Step3 過濾掉http協議if(parse[2].endsWith(" HTTP/1.1")){parse[2] = parse[2].substring(0,parse[2].length() - " HTTP/1.1".length());}outPutValue.set(parse[0] + "\t"+ parse[1] +"\t"+parse[2]);context.write(key,outPutValue);}
}class LogReducer extends Reducer<LongWritable, Text,Text, NullWritable>{@Overrideprotected void reduce(LongWritable key, Iterable<Text> values, Context context) throws IOException, InterruptedException {context.write(values.iterator().next(),NullWritable.get());}
}

job
job類的代碼需要做如下修改 :
在這里插入圖片描述


package com.stu.log;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
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;
import org.apache.hadoop.util.Tool;public class LogJob extends Configured implements Tool {public static void main(String[] args) {try {new LogJob().run(args);} catch (Exception e) {e.printStackTrace();}}public int run(String[] args) throws Exception {Configuration configuration = new Configuration();FileSystem fileSystem = FileSystem.get(configuration);Job job = Job.getInstance(configuration);job.setJarByClass(LogJob.class);job.setMapperClass(LogMapper.class);job.setReducerClass(LogReducer.class);job.setMapOutputKeyClass(LongWritable.class);job.setMapOutputValueClass(Text.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(NullWritable.class);FileInputFormat.addInputPath(job,new Path(args[0]));Path path = new Path(args[1]);if(fileSystem.exists(path)){fileSystem.delete(path,true);}FileOutputFormat.setOutputPath(job,path);boolean b = job.waitForCompletion(true);System.out.println(b);return 0;}
}

2.查看數據清洗后的輸出結果

[root@hadoop log]# hdfs dfs -cat /logresult/part-r-00000 | head -100 //通過管道查看100條數據(清洗過的)

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

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

相關文章

斯坦福2024人工智能指數報告 2

《人工智能指數報告》由斯坦福大學、AI指數指導委員會及業內眾多大佬Raymond Perrault、Erik Brynjolfsson 、James Manyika、Jack Clark等人員和組織合著&#xff0c;旨在追蹤、整理、提煉并可視化與人工智能&#xff08;AI&#xff09;相關各類數據&#xff0c;該報告已被大多…

靜態網站部署指南

一、資源準備 1.1 服務器 # 當前的服務器,公網ip:127.0.0.1 # 通過ssh協議連接訪問服務器1.2 域名 目前個人擁有的域名有: 域名所有者有效期wujinet.top個人2029-04-151.3 網站代碼 純靜態網站,網站源碼由筆者自行開發并提供發布部署的技術支持。 二、技術棧 2.0 源碼…

linux部署rustdesk

1.拉取RustDesk鏡像 sudo docker image pull rustdesk/rustdesk-server2.啟動hbbs服務 sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v pwd:/root -td --nethost rustdesk/rustdesk-server hbbs3.啟動hbbr服務 sudo dock…

spring boot 之 結合aop整合日志

AOP 該切面僅用于請求日志記錄&#xff0c;若有其他需求&#xff0c;在此基礎上擴展即可&#xff0c;不多逼逼&#xff0c;直接上代碼。 引入切面依賴 <!-- 切面 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>sp…

【C++】set與map

目錄 一、鍵值對 二、set 1. set的模板參數列表 2. set的構造 3. set的迭代器 4. set的容量 5. set的修改 6. set的查找 三、map 1. map的模板參數列表 2. map的構造 3. map的迭代器 4. map的容量 5. map的修改 6. map的查找 一、鍵值對 用來表示具有一一對應關…

SARscape5.7已經支持3米陸探一號(LT-1)數據處理

SARsacpe5.6.2.1版本已經開始支持LT-1的數據處理&#xff0c;由于當時只獲取了12米的條帶模式2&#xff08;STRIP2&#xff09;例子數據&#xff0c;對3米條帶模式1&#xff08;STRIP1&#xff09;數據的InSAR處理軌道誤差挺大&#xff0c;可能會造成干涉圖異常。 SARsacpe5.7最…

三十篇:動脈脈搏:企業業務處理系統的生命力

動脈脈搏&#xff1a;企業業務處理系統的生命力 1. 引言 在數字經濟的浪潮下&#xff0c;企業之間的競爭已不僅僅是產品和服務的競爭&#xff0c;更是信息處理能力的競爭。業務處理系統&#xff08;Transaction Processing System, TPS&#xff09;是企業信息系統架構的基礎&a…

Python3 筆記:Python之禪

打開Python Shell&#xff0c;輸入import this&#xff0c;按回車鍵運行程序。 Beautiful is better than ugly. 優雅勝于丑陋。 Explicit is better than implicit. 明確勝于含糊。 Simple is better than complex. 簡單勝于復雜。

圖形學初識--紋理采樣和Wrap方式

文章目錄 前言正文1、為什么需要紋理采樣&#xff1f;2、什么是紋理采樣&#xff1f;3、如何進行紋理采樣&#xff1f;&#xff08;1&#xff09;假設繪制區域為矩形&#xff08;2&#xff09;假設繪制區域為三角形 4、什么是紋理的Wrap方式&#xff1f;5、有哪些紋理的Wrap方式…

洪師傅代駕系統開發 支持公眾號H5小程序APP 后端Java源碼

代駕流程圖 業務流程圖 管理端設置 1、首頁裝修 2、師傅獎勵配置 師傅注冊后,可享受后臺設置的新師傅可得的額外獎勵; 例:A注冊了師傅,新人獎勵可享受3天,第一天的第一筆訂單完成后可得正常傭金傭金*獎勵比例 完成第二筆/第三筆后依次可得正常傭金傭金*獎勵比例 完成的第四…

牛客NC166 連續子數組的最大和(二)【中等 前綴和數組+動態規劃 Java/Go/PHP/C++】

題目 題目鏈接&#xff1a; https://www.nowcoder.com/practice/11662ff51a714bbd8de809a89c481e21 思路 前綴和數組動態規劃Java代碼 import java.util.*;public class Solution {/*** 代碼中的類名、方法名、參數名已經指定&#xff0c;請勿修改&#xff0c;直接返回方法規…

小短片創作-優化場景并輸出短片(二)

1、什么是潮濕感 什么是潮濕感&#xff1a;基礎顏色變化粗糙度變化表面滲入性 1.基礎顏色變化&#xff1a;潮濕的地方顏色會變深 2.粗糙度變化&#xff1a;鏡面粗糙度為0&#xff0c;潮濕的地方粗糙度會變低 3.表面滲入性&#xff1a;主要看材質是否防水 2、調整場景材質增…

小抄 20240526

1 一些人焦慮的原因&#xff0c;可能是他也知道自己做的事無意義&#xff0c;但是又停不下來&#xff0c;于是一直在做無用功&#xff0c;空耗精神力量。 可以試著去做一些熱愛的、有價值的事情&#xff0c;焦慮就會慢慢消失。 2 人們看歷史的時候&#xff0c;很容易把自己代…

士大夫v產生的

一、前言 亂碼七糟 [lun qī bā zāo]&#xff0c;我時常懷疑這個成語是來形容程序猿的&#xff01; 無論承接什么樣的需求&#xff0c;是不是身邊總有那么幾個人代碼寫的爛&#xff0c;但是卻時常有測試小姐姐過來聊天(_求改bug_)、有產品小伙伴送吃的(_求寫需求_)、有業務小…

Java 寫入 influxdb

利用Python隨機生成一個1000行的csv文件 import csv import random from datetime import datetime, timedelta from random import randint, choice# 定義監控對象列表和指標名稱列表 monitor_objects [Server1, Server2, Server3, DB1] metric_names [CPUUsage, MemoryUsa…

網絡編程 —— Http進度條

第一種下載帶進度的方法 string url "https://nodejs.org/dist/v20.10.0/node-v20.10.0-x64.msi"; 1使用getASync獲取服務器響應數據 參數1請求的路徑&#xff0c; 參數2 HttpCompletionOption.ResponseHeadersRead 請求完成時候等待請求帶什么程度才…

耐高溫輸送帶的優勢

耐高溫輸送帶&#xff1a;工業運輸的革命性升級&#xff0c;助力生產線高效穩定運行 在現代化工業生產的浪潮中&#xff0c;耐高溫輸送帶以其獨特的優勢&#xff0c;正逐漸成為工業運輸領域的得力助手。它不僅能夠有效提升生產效率&#xff0c;更能確保生產線的安全穩定運行&a…

算法隨想錄第二十天打卡|654.最大二叉樹 , 617.合并二叉樹 ,700.二叉搜索樹中的搜索 , 98.驗證二叉搜索樹

654.最大二叉樹 又是構造二叉樹&#xff0c;昨天大家剛剛做完 中序后序確定二叉樹&#xff0c;今天做這個 應該會容易一些&#xff0c; 先看視頻&#xff0c;好好體會一下 為什么構造二叉樹都是 前序遍歷 題目鏈接/文章講解&#xff1a;代碼隨想錄 視頻講解&#xff1a;又是構…

「動態規劃」打家劫舍

力扣原題鏈接&#xff0c;點擊跳轉。 有一個小偷&#xff0c;要偷東西。假設有n個房間&#xff0c;每個房間都有現金&#xff0c;下標為i的房間內的現金數是nums[i]。不能同時偷相鄰的2個房間&#xff0c;其中第一個房間和最后一個房間是相鄰的。那么這個小偷最多能偷到多少現…

YOLOv8+PyQt5鳥類檢測系統完整資源集合(yolov8模型,從圖像、視頻和攝像頭三種路徑識別檢測,包含登陸頁面、注冊頁面和檢測頁面)

資源包含可視化的鳥類檢測系統&#xff0c;基于最新的YOLOv8訓練的鳥類檢測模型&#xff0c;和基于PyQt5制作的可視化鳥類檢測系統&#xff0c;包含登陸頁面、注冊頁面和檢測頁面&#xff0c;該系統可自動檢測和識別圖片或視頻當中出現的各種鳥類&#xff0c;以及自動開啟攝像頭…