最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

教你怎么使用hadoop來提取文件中的指定內容

 更新時間:2021年05月26日 14:40:44   作者:日京  
發(fā)現有很多小伙伴不會使用hadoop來提取文件中的指定內容,今天特地整理了這篇文章,文中有非常詳細的代碼示例,對不會這個方法的小伙伴們有很好地幫助,需要的朋友可以參考下

一、需求

把以下txt中含“baidu”字符串的鏈接輸出到一個文件,否則輸出到另外一個文件。

在這里插入圖片描述

二、步驟

1.LogMapper.java

package com.whj.mapreduce.outputformat;

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 LogMapper extends Mapper<LongWritable,Text,Text,NullWritable> {
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
//        不做任何處理
        context.write(value,NullWritable.get());
    }
}

2.LogReducer.java

package com.whj.mapreduce.outputformat;

import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class LogReducer extends Reducer<Text,NullWritable,Text,NullWritable> {
    @Override
    protected void reduce(Text key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {
        for (NullWritable value : values) {
            context.write(key,NullWritable.get());
        }
    }
}

3.LogOutputFormat.java

package com.whj.mapreduce.outputformat;

import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.RecordWriter;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;

public class LogOutputFormat extends FileOutputFormat<Text,NullWritable> {
    @Override
    public RecordWriter<Text, NullWritable> getRecordWriter(TaskAttemptContext job) throws IOException, InterruptedException {
        LogRecordWriter lrw = new LogRecordWriter(job);
        return lrw;
    }
}

4.LogRecordWriter.java

package com.whj.mapreduce.outputformat;

import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.RecordWriter;
import org.apache.hadoop.mapreduce.TaskAttemptContext;

import java.io.IOException;

public class LogRecordWriter extends RecordWriter<Text,NullWritable> {

    private FSDataOutputStream baiduOut;//ctrl+alt+f
    private FSDataOutputStream otherOut;

    public LogRecordWriter(TaskAttemptContext job) throws IOException {
//創(chuàng)建兩條流
        FileSystem fs = FileSystem.get(job.getConfiguration());
        baiduOut = fs.create(new Path("D:\\temp\\outputformat.log"));
        otherOut = fs.create(new Path("D:\\temp\\other.log"));
    }

    @Override
    public void write(Text key, NullWritable nullWritable) throws IOException, InterruptedException {
//        具體寫
        String log = key.toString();
        if(log.contains("baidu")){
            baiduOut.writeBytes(log+"\n");
        }else{
            otherOut.writeBytes(log+"\n");
        }
    }

    @Override
    public void close(TaskAttemptContext taskAttemptContext) throws IOException, InterruptedException {
//關流
        IOUtils.closeStream(baiduOut);
        IOUtils.closeStream(otherOut);
    }
}

5.LogDriver.java

package com.whj.mapreduce.outputformat;

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;
import java.io.IOException;
public class LogDriver {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf);
        job.setJarByClass(LogDriver.class);
        job.setMapperClass(LogMapper.class);
        job.setReducerClass(LogReducer.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(NullWritable.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(NullWritable.class);
        //設置自定義的 outputformat
        job.setOutputFormatClass(LogOutputFormat.class);
        FileInputFormat.setInputPaths(job, new Path("D:\\input"));
        // 雖 然 我 們 自 定 義 了 outputformat , 但 是 因 為 我 們 的 outputformat 繼承自fileoutputformat
        //而 fileoutputformat 要輸出一個_SUCCESS 文件,所以在這還得指定一個輸出目錄
        FileOutputFormat.setOutputPath(job, new Path("D:\\temp\\logoutput"));
        boolean b = job.waitForCompletion(true);
        System.exit(b ? 0 : 1);
    } }

三、結果

在這里插入圖片描述

到此這篇關于教你怎么使用hadoop來提取文件中的指定內容的文章就介紹到這了,更多相關hadoop提取文件內容內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java Ribbon負載均衡詳細講解

    Java Ribbon負載均衡詳細講解

    Ribbon其實就是一個軟負載均衡的客戶端組件,他可以和其他所需請求的客戶端結合使用,這篇文章主要介紹了Ribbon負載均衡服務調用案例代碼,需要的朋友可以參考下
    2023-01-01
  • SpringBoot中使用EasyExcel并行導出多個excel文件并壓縮zip后下載的代碼詳解

    SpringBoot中使用EasyExcel并行導出多個excel文件并壓縮zip后下載的代碼詳解

    SpringBoot的同步導出方式中,服務器會阻塞直到Excel文件生成完畢,在處理大量數據的導出功能,本文給大家介紹了SpringBoot中使用EasyExcel并行導出多個excel文件并壓縮zip后下載,需要的朋友可以參考下
    2024-09-09
  • spring中的FactoryBean代碼示例

    spring中的FactoryBean代碼示例

    這篇文章主要介紹了spring中的FactoryBean代碼示例,涉及FactoryBean的實現等相關內容,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • Java中如何獲取文件的上級目錄

    Java中如何獲取文件的上級目錄

    這篇文章主要介紹了Java中如何獲取文件的上級目錄問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • JAVA根據ip地址獲取歸屬地的實現方法

    JAVA根據ip地址獲取歸屬地的實現方法

    本文主要介紹了JAVA根據ip地址獲取歸屬地的實現方法,要通過Java程序獲取IP地址對應的城市,需要借助第三方的IP地址庫,下面就來介紹一下,感興趣的可以了解一下
    2023-10-10
  • Java編寫中容易搞錯的一些東西

    Java編寫中容易搞錯的一些東西

    Java編寫中容易搞錯的一些東西...
    2006-12-12
  • Java Spring MVC 上傳下載文件配置及controller方法詳解

    Java Spring MVC 上傳下載文件配置及controller方法詳解

    這篇文章主要介紹了Java Spring MVC 上傳下載文件配置及controller方法詳解,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • Maven配置文件pom.xml詳解

    Maven配置文件pom.xml詳解

    什么是POM?這篇文章主要介紹了Maven的配置文件pom.xml,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 一篇文章看懂Java字符串操作

    一篇文章看懂Java字符串操作

    String是Java中的類,它提供一些預定義的方法,這些方法使基于字符串的問題解決方案更加容易,下面這篇文章主要給大家介紹了關于Java字符串操作的相關資料,需要的朋友可以參考下
    2021-11-11
  • 怎么運行用記事本寫的java程序

    怎么運行用記事本寫的java程序

    以下小編就為大家介紹一下,怎么運行用記事本寫的java程序。需要的朋友可以過來參考下
    2013-08-08

最新評論

保山市| 兴安盟| 高唐县| 行唐县| 三河市| 屯昌县| 襄城县| 江津市| 莆田市| 屏东市| 通山县| 双城市| 建始县| 右玉县| 繁峙县| 竹北市| 丽水市| 裕民县| 眉山市| 卢龙县| 南雄市| 庐江县| 大洼县| 都匀市| 青龙| 深水埗区| 鄂伦春自治旗| 丽江市| 环江| 鄄城县| 兰溪市| 开封县| 闸北区| 高陵县| 家居| 定兴县| 万荣县| 沭阳县| 乾安县| 禹州市| 鄂托克前旗|