zoukankan      html  css  js  c++  java
  • 3.Mapreduce实例——排序

    Mapreduce实例——排序

    实验步骤

    1.开启Hadoop

     

    2.新建mapreduce3目录

    在Linux本地新建/data/mapreduce3目录

     

    3. 上传文件到linux中

    (自行生成文本文件,放到个人指定文件夹下)

    good_visit1

    1010037 100

    1010102 100

    1010152 97

    1010178 96

    1010280 104

    1010320 103

    1010510 104

    1010603 96

    1010637 97

    4.在HDFS中新建目录

    首先在HDFS上新建/mymapreduce3/in目录,然后将Linux本地/data/mapreduce3目录下的good_visit1文件导入到HDFS的/mymapreduce3/in目录中。

     

     

    5.新建Java Project项目

    新建Java Project项目,项目名为mapreduce。

    在mapreduce项目下新建包,包名为mapreduce3。

    在mapreduce3包下新建类,类名为OneSort。

    6.添加项目所需依赖的jar包

    右键项目,新建一个文件夹,命名为:hadoop2lib,用于存放项目所需的jar包。

    将/data/mapreduce2目录下,hadoop2lib目录中的jar包,拷贝到eclipse中mapreduce2项目的hadoop2lib目录下。

    hadoop2lib为自己从网上下载的,并不是通过实验教程里的命令下载的

    选中所有项目hadoop2lib目录下所有jar包,并添加到Build Path中。

     

    7.编写程序代码

    OneSort.java

    package mapreduce3;
     
    import java.io.IOException;  
    import org.apache.hadoop.conf.Configuration;  
    import org.apache.hadoop.fs.Path;  
    import org.apache.hadoop.io.IntWritable;  
    import org.apache.hadoop.io.Text;  
    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.input.TextInputFormat;  
    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;  
    import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;  
    public class OneSort {  
        public static class Map extends Mapper<Object , Text , IntWritable,Text >{  
            private static Text goods=new Text();  
            private static IntWritable num=new IntWritable();  
            public void map(Object key,Text value,Context context) throws IOException, InterruptedException{  
                String line=value.toString();  
                String arr[]=line.split("\t");  
                num.set(Integer.parseInt(arr[1]));  
                goods.set(arr[0]);  
                context.write(num,goods);  
            }  
        }  
        public static class Reduce extends Reducer< IntWritable, Text, IntWritable, Text>{  
            private static IntWritable result= new IntWritable();  
            public void reduce(IntWritable key,Iterable<Text> values,Context context) throws IOException, InterruptedException{  
                for(Text val:values){  
                    context.write(key,val);  
                }  
            }  
        }  
        public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException{  
            Configuration conf=new Configuration();  
            Job job =new Job(conf,"OneSort");  
            job.setJarByClass(OneSort.class);  
            job.setMapperClass(Map.class);  
            job.setReducerClass(Reduce.class);  
            job.setOutputKeyClass(IntWritable.class);  
            job.setOutputValueClass(Text.class);  
            job.setInputFormatClass(TextInputFormat.class);  
            job.setOutputFormatClass(TextOutputFormat.class);  
            Path in=new Path("hdfs://192.168.109.10:9000/mymapreduce3/in/goods_visit1");  
            Path out=new Path("hdfs://192.168.109.10:9000/mymapreduce3/out");  
            FileInputFormat.addInputPath(job,in);  
            FileOutputFormat.setOutputPath(job,out);  
            System.exit(job.waitForCompletion(true) ? 0 : 1);   
        }  
    }  

    8.运行代码

    在OneSort类文件中,右键并点击=>Run As=>Run on Hadoop选项,将MapReduce任务提交到Hadoop中。

     

    9.查看实验结果

    待执行完毕后,进入命令模式下,在HDFS中/mymapreduce3/out查看实验结果。

    hadoop fs -ls /mymapreduce3/out  

    hadoop fs -cat /mymapreduce3/out/part-r-00000  

    图一为我的运行结果,图二为实验结果

    经过对比,发现结果一样

     

     

    此处为浏览器截图

     

  • 相关阅读:
    Tongue Twister之scream
    把5页的内容变成2页
    Python3 字符串中的变量替换
    notepad++同时编辑多行
    获取元素属性值
    selenium定位H5表单验证的提示语
    POJ 3009 Curling 2.0(dfs)
    CCF 2016122 工资计算
    POJ 2976 Dropping tests(01分数规划二分(最大化平均值))
    POJ 2155 Matrix(二维树状数组)
  • 原文地址:https://www.cnblogs.com/wangdayang/p/15581863.html
Copyright © 2011-2022 走看看