激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - Hadoop計數器的應用以及數據清洗

Hadoop計數器的應用以及數據清洗

2020-07-29 18:05qq_43193797 服務器知識

今天小編就為大家分享一篇關于Hadoop計數器的應用以及數據清洗,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

Hadoop計數器的應用以及數據清洗

數據清洗(ETL)

在運行核心業務MapReduce程序之前,往往要先對數據進行清洗,清理掉不符合用戶要求的數據。清理的過程往往只需要運行Mapper程序,不需要運行Reduce程序。

1.需求

去除日志中字段長度小于等于11的日志。

(1)輸入數據

web.log

(2)期望輸出數據

每行字段長度都大于11

2.需求分析

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

3.實現代碼

(1)編寫LogMapper類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.atguigu.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 LogMapper extends Mapper<LongWritable, Text, Text, NullWritable>{
  Text k = new Text();
  @Override
  protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
   // 1 獲取1行數據
   String line = value.toString();
   // 2 解析日志
   boolean result = parseLog(line,context);
   // 3 日志不合法退出
   if (!result) {
     return;
   }
   // 4 設置key
   k.set(line);
   // 5 寫出數據
   context.write(k, NullWritable.get());
  }
  // 2 解析日志
  private boolean parseLog(String line, Context context) {
   // 1 截取
   String[] fields = line.split(" ");
   // 2 日志長度大于11的為合法
    if (fields.length > 11) {
     // 系統計數器
     context.getCounter("map", "true").increment(1);
     return true;
   }else {
     context.getCounter("map", "false").increment(1);
     return false;
   }
  }
}

(2)編寫LogDriver類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.atguigu.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 LogDriver {
  public static void main(String[] args) throws Exception {
// 輸入輸出路徑需要根據自己電腦上實際的輸入輸出路徑設置
    args = new String[] { "e:/input/inputlog", "e:/output1" };
   // 1 獲取job信息
   Configuration conf = new Configuration();
   Job job = Job.getInstance(conf);
   // 2 加載jar包
   job.setJarByClass(LogDriver.class);
   // 3 關聯map
   job.setMapperClass(LogMapper.class);
   // 4 設置最終輸出類型
   job.setOutputKeyClass(Text.class);
   job.setOutputValueClass(NullWritable.class);
   // 設置reducetask個數為0
   job.setNumReduceTasks(0);
   // 5 設置輸入和輸出路徑
   FileInputFormat.setInputPaths(job, new Path(args[0]));
   FileOutputFormat.setOutputPath(job, new Path(args[1]));
   // 6 提交
   job.waitForCompletion(true);
  }
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:https://blog.csdn.net/qq_43193797/article/details/86141048

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人自拍小视频 | 万圣街在线观看免费完整版 | 亚洲影院在线 | 国产999精品久久久久 | 古装三级在线观看 | 天天鲁在线视频免费观看 | 丰满年轻岳中文字幕一区二区 | 日本视频在线免费观看 | 性插视频| 免费黄色在线观看网站 | 国产在线观看免费视频软件 | 久久96国产精品久久秘臀 | 白白在线免费视频 | 极品xxxx欧美一区二区 | 国产日韩大片 | 少妇一级淫片高潮流水电影 | 国产精品爱久久久久久久 | 国产色视频一区 | 中文字幕国产亚洲 | 国产日韩亚洲 | 国产一区二区三区在线免费 | 国产一级毛片视频在线! | 国产另类一区 | 天天看天天摸天天操 | 91精品一区二区综合在线 | 国产一级淫片免费看 | 在线观看国产日韩 | 伊人999 | 成人三级电影在线 | 在线免费观看欧美 | 欧美一级精品 | 日本成人在线播放 | 成人在线视频在线观看 | 久久精品久久精品久久精品 | 91精品国啪老师啪 | 麻豆视频在线观看免费网站 | 欧洲色阁中文字幕 | 色av成人天堂桃色av | 国产高清美女一级毛片久久 | 爱逼av| 成人9禁啪啪无遮挡免费 |