MapReduce的编程开发——过滤和保存


前言

本文主要是学习MapReduce的学习笔记,对所学内容进行记录。
实验环境:
1.Linux Ubuntu 16.04

2.hadoop3.0.0

3.eclipse4.5.1


一、启动Hadoop

  1. 进入Hadoop启动目录cd /apps/hadoop/sbin
  2. 启动Hadoop./start-all.sh
  3. 输入‘jps’,启动后显示如下信息
    在这里插入图片描述

二、环境搭配

  1. 打开eclipse->Window->Preferences;

  2. 选择Hadoop Map/Reduce,选择Hadoop包根目录,/apps/hadoop,点击Apply,点击OK;

  3. 点击window–>show view–>other–>mapreduce tools–>map/reduce locations,之后页面会出现对应的标签页;
    界面

  4. 点击3中图标1,在Local name输入myhadoop,在DFS Master 框下Port输入8020,点击Finish,出现3中右侧页面;
    在这里插入图片描述

  5. 点击3中

  6. 图标2,选择下图内容,出现第3步图中左侧内容
    在这里插入图片描述
    完成环境配置环境。

三、过滤与保存实验

  1. 新建test项目,新建srs包;
  2. 新建SRS类,即SRS.java,编写并保存如下代码:
package srs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Counter;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;
import java.util.Iterator;
import java.util.Random;

public class SRS {
    public static class SRSMapper extends Mapper<Object,Text,NullWritable,Text>{
        private Random rands=new Random();
        private Double percentage=0.3;
        public void map(Object key,Text value,Context context) throws IOException,InterruptedException{
            if(rands.nextDouble()<percentage){
                context.write(NullWritable.get(),value);
            }
        }
    }
    public static class SRSReduce extends Reducer<NullWritable,Text,Text,NullWritable>{
        public void reducer(NullWritable key, Iterator<Text> values,Context context) throws IOException,InterruptedException{
            while(values.hasNext()){
                String value=values.toString();
                context.write(new Text(value),NullWritable.get());
            }
        }
    }
    public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException{
		String dir_in = "hdfs://localhost:8020/srs/input";
		String dir_out = "hdfs://localhost:8020/srs/output";
		Path in = new Path(dir_in);
		Path out = new Path(dir_out);
		
        Configuration conf=new Configuration();
		out.getFileSystem(conf).delete(out, true);
		
        Job job=Job.getInstance(conf);
        job.setJarByClass(SRS.class);
        job.setMapperClass(SRSMapper.class);
        job.setReducerClass(SRSReduce.class);
        job.setOutputKeyClass(NullWritable.class);
        job.setOutputValueClass(Text.class);
        FileInputFormat.addInputPath(job,in);
        FileOutputFormat.setOutputPath(job,out);
        System.exit(job.waitForCompletion(true)?0:1);
    }
}
  1. 运行指令cp /apps/hadoop/etc/hadoop/{core-site.xml,hdfs-site.xml,log4j.properties} /home/dolphin/workspace/test/src,将hadoop配置文件复制到src文件夹下;
  2. 创建输入文件存放路径
hadoop fs -mkdir /srs
hadoop fs -mkdir /srs/input
  1. 将数据文件放入hadoop目录下,hadoop fs -put /home/dolphin/Desktop/demo.txt /srs/input,demo.txt内容如下:
aaa
sss
ddd
ccc
ggg
  1. 运行SRS.java文件,得到单词计数的结果在output文件夹中如下所示
    在这里插入图片描述

总结

本实验利用Hadoop的MapReduce进行过滤和保存操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值