zoukankan      html  css  js  c++  java
  • Mapreduce编程

    Map

    public static class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable>

    继承Mapper类
    其中<LongWritable, Text, Text, IntWritable>的含义如下:

    • LongWritable为map函数的输入键,行首偏移量
    • Text为map函数的输入值,每行的内容
    • Text为输出类型,根据业务来定义
    • IntWritable为输出值,即reduce的输入值,根据业务来定义

    继承后,编写map函数

    public void map(LongWritable key, Text value,Context context)

    Reduce

    pubilc static class MyReduce extends Reducer<Text, IntWritable, Text, IntWritable>

    继承Reducer类
    其中<Text, IntWritable, Text, IntWritable>的含义如下:

    • Text 输入key
    • IntWritable reduce阶段输入值
    • Text reduce阶段输出类型
    • IntWritable 输出值

    继承后,编写reduce函数
    public void reduce(Text key, Iterable value, Context context)

    main

    主函数中要设置job

    public static void main(String[] args) throws Exception {
            JobConf conf = new JobConf(WordCount.class);
            conf.setJobName("wordcount");
    
            conf.setOutputKeyClass(Text.class);
            conf.setOutputValueClass(IntWritable.class);
    
            conf.setMapperClass(Map.class);
            conf.setCombinerClass(Reduce.class);
            conf.setReducerClass(Reduce.class);
    
            conf.setInputFormat(TextInputFormat.class);
            conf.setOutputFormat(TextOutputFormat.class);
    
            FileInputFormat.setInputPaths(conf, new Path(args[0]));
            FileOutputFormat.setOutputPath(conf, new Path(args[1]));
    
            JobClient.runJob(conf);
        }
    
    在main中要熟悉job和fs各项操作
    1. main函数调用jobconf来对MapReduce Job进行初始化,调用setJobName()命名Job
    2. 设置输出结果类型
    conf.setOutputKeyClass(Text.class );
    
    conf.setOutputValueClass(IntWritable.class );
    

    Text相当于Java的String,IntWritable相当于Int
    3. 设置Map、Combiner、Reduce的相关处理类
    4. 调用setInputFormat()、setOutputFormat()设置输入输出路径

    输入分片与记录

    • JobClient通过指定输入文件格式来生成数据分片InputSplit
    • 分片不是数据本身,而是数据的索引
    • InputFormat负责分片的生成

    Mapreduce的输入文件格式以及多路径仍需要学习
  • 相关阅读:
    vue技术分享之你可能不知道的7个秘密
    JVM知识总结-运行时区域划分
    如何使用加多宝(jdb)在linux下调试Java程序
    RabbitMQ 高可用之镜像队列
    Gson格式转换Integer变为Double类型问题解决
    IPv6地址表示方式
    MySQL truncate()函数的使用说明
    Java 实现判断 主机是否能 ping 通
    MySQL 性能优化系列之一 单表预处理
    Linux 查看CPU和内存的使用情况
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12345540.html
Copyright © 2011-2022 走看看