文档章节

hadoop mapper reducer sample demo

Heinrich_Chen
 Heinrich_Chen
发布于 2017/05/24 11:24
字数 313
阅读 26
收藏 0
package com.traveller.bumble.hadoop.mr.temperature;

import com.traveller.bumble.hadoop.mr.wordcount.WordCountMapper;
import com.traveller.bumble.hadoop.mr.wordcount.WordCountReducer;
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.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.File;
import java.io.IOException;

/**
 * Created by macbook on 2017/5/23.
 */
public class TemperatureApp {

    public static void main(String[] args) {


        try {

            String srcPath = args[0];
            String destPath = args[1];
            String isLocal = args[2];
            boolean flag = false;
            //本地模式
            if (isLocal.equals("1")) {
                File file = new File(destPath);
                flag = deleteDir(file);
                //集群模式
            } else {

                flag = deletePath(new Path(destPath));

            }


            System.out.println(flag);
            Job job = Job.getInstance();
            job.setJobName("temperature");
            job.setJarByClass(TemperatureApp.class);

            job.setNumReduceTasks(1);

            FileInputFormat.addInputPath(job, new Path(srcPath));
            FileOutputFormat.setOutputPath(job, new Path(destPath));
            job.setMapperClass(TemperatureMapper.class);
            job.setReducerClass(TemperatureReducer.class);

            job.setOutputKeyClass(IntWritable.class);
            job.setMapOutputValueClass(IntWritable.class);
            job.waitForCompletion(true);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }



    private static boolean deletePath(Path path) {
        try {
            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(conf);
            boolean flag = fs.deleteOnExit(path);
            return flag;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }

    private static boolean deleteDir(File dir) {
        if (dir.isDirectory()) {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        return dir.delete();
    }
}

 

 

mapper

package com.traveller.bumble.hadoop.mr.temperature;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * Created by macbook on 2017/5/24.
 */
public class TemperatureMapper extends Mapper<LongWritable,Text,IntWritable,IntWritable> {

    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        String [] strs = value.toString().split(",");
        IntWritable year = new IntWritable(Integer.valueOf(strs[0]));
        IntWritable temprature = new IntWritable(Integer.valueOf(strs[1]));
        context.write(year,temprature);

    }
}

reducer

package com.traveller.bumble.hadoop.mr.temperature;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

/**
 * Created by macbook on 2017/5/24.
 */
public class TemperatureReducer extends Reducer<IntWritable,IntWritable,IntWritable,IntWritable> {

    protected void reduce(IntWritable key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {


        Iterator<IntWritable> iterators = values.iterator();
        List<Integer> temp = new ArrayList<>();
        while (iterators.hasNext()){
            temp.add(iterators.next().get());
        }
        Integer max = Collections.max(temp);
        context.write(key,new IntWritable(max));
    }
}

 

© 著作权归作者所有

Heinrich_Chen
粉丝 14
博文 41
码字总数 39863
作品 0
杭州
高级程序员
私信 提问
hadoop-streaming 例子

Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如: 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,...

cookqq
2014/01/04
260
0
用PHP编写Hadoop的MapReduce程序

目录(?)[+] Hadoop流 虽然Hadoop是用java写的,但是Hadoop提供了Hadoop流,Hadoop流提供一个API, 允许用户使用任何语言编写map函数和reduce函数. Hadoop流动关键是,它使用UNIX标准流作为程序...

bengozhong
2016/02/26
42
0
用python写MapReduce函数——以WordCount为例

阅读目录 1. Python MapReduce 代码 2. 在Hadoop上运行python代码 3. 利用python的迭代器和生成器优化Mapper 和 Reducer代码 4. 参考 尽管Hadoop框架是用java写的,但是Hadoop程序不限于jav...

技术mix呢
2017/10/18
0
0
来自eBay:Hadoop Job成功率达99.9%的优化实战

作者介绍 eBay的CAL(Central Application Logging)系统负责收集eBay各种应用程序的日志数据,并且通过Hadoop MapReduce job生成日志报告,应用程序开发人员与运维人员通过报告可获得以下内...

李万雪
03/28
0
0
Hadoop示例程序WordCount运行及详解

最近在学习云计算,研究Haddop框架,费了一整天时间将Hadoop在Linux下完全运行起来,看到官方的map-reduce的demo程序WordCount,仔细研究了一下,算做入门了。 运行方法: 假设: /home/cq/w...

dreaminthewind
2013/09/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
21分钟前
2
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
4
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
13
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
13
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部