婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Hadoop計數器的應用以及數據清洗

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

熱門標簽:外呼系統不彈窗 申請400電話價格多少 安陽ai電銷機器人軟件 柳州市機器人外呼系統報價 云會外呼系統 廈門營銷外呼系統平臺 外呼系統的經營范圍 智能電話機器人坐席 涪陵商都400電話開通辦理

數據清洗(ETL)

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

1.需求

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

(1)輸入數據

web.log

(2)期望輸出數據

每行字段長度都大于11

2.需求分析

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

3.實現代碼

(1)編寫LogMapper類

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類

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

總結

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

標簽:撫順 蕪湖 晉城 巴中 福州 南充 孝感 綏化

巨人網絡通訊聲明:本文標題《Hadoop計數器的應用以及數據清洗》,本文關鍵詞  Hadoop,計數器,的,應用,以及,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Hadoop計數器的應用以及數據清洗》相關的同類信息!
  • 本頁收集關于Hadoop計數器的應用以及數據清洗的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 黔西| 萨嘎县| 建湖县| 建始县| 高阳县| 陆河县| 商水县| 德惠市| 宁安市| 新竹县| 龙游县| 泾川县| 安仁县| 合作市| 九龙县| 柯坪县| 邓州市| 瓦房店市| 墨竹工卡县| 合江县| 南投市| 米泉市| 余干县| 南漳县| 津市市| 怀宁县| 阳泉市| 昌吉市| 嘉禾县| 双江| 攀枝花市| 安陆市| 北票市| 海口市| 翁牛特旗| 双桥区| 平昌县| 大港区| 油尖旺区| 灵丘县| 聂拉木县|