win10 Intellij idea开发Hadoop MapReduce程序单机测试

原创 2016年10月22日 15:58:40

测试《Hadoop权威指南》第二章的天气例子
环境;win10,JDK1.8,Intellij idea,hadoop2.7.2

1.下载Hadoop包

2.打开IDEA新建Java项目
这里写图片描述
这里写图片描述

3.项目配置 File —- Project Structure
(1)首先注意SDK的正确配置,使用JDK1.8
这里写图片描述

(2)加入hadoop的jar依赖包
这里写图片描述
这里写图片描述

(3)打包配置
这里写图片描述
这里写图片描述
这里写图片描述

4.编写map-reduce代码
这里写图片描述

(1)Mapper
负责预处理文件,准备数据

package com.hadoop.tempearture;

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;

public class MaxTemperatureMapper
        extends Mapper<LongWritable, Text, Text, IntWritable> {  //注1
    private static final int MISSING = 9999;
    @Override
    public void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {
        String line = value.toString();
        String year = line.substring(15, 19);
        int airTemperature;
        if (line.charAt(87) == '+') { // parseInt doesn't like leading plus signs
            airTemperature = Integer.parseInt(line.substring(88, 92));
        } else {
            airTemperature = Integer.parseInt(line.substring(87, 92));
        }
        String quality = line.substring(92, 93);
        if (airTemperature != MISSING && quality.matches("[01459]")) {
            context.write(new Text(year), new IntWritable(airTemperature));
        }
    }
}

(2)reducer
处理数据

package com.hadoop.tempearture;

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

import java.io.IOException;

public class MaxTemperatureReducer
        extends Reducer<Text, IntWritable, Text, IntWritable> {
    @Override
    public void reduce(Text key, Iterable<IntWritable> values,
                       Context context)
            throws IOException, InterruptedException {
        int maxValue = Integer.MIN_VALUE;
        for (IntWritable value : values) {
            maxValue = Math.max(maxValue, value.get());
        }
        context.write(key, new IntWritable(maxValue));
    }
}

(3) main()

package com.hadoop.tempearture;

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;

public class MaxTemperature {
    public static void main(String[] args) throws Exception {
        if (args.length != 2) {
            System.err.println("Usage: MaxTemperature <input path> <output path>");
            System.exit(-1);
        }

        Job job = new Job();
        job.setJarByClass(MaxTemperature.class);
        job.setJobName("Max temperature");

        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));

        job.setMapperClass(MaxTemperatureMapper.class);
        job.setReducerClass(MaxTemperatureReducer.class);

        job.setOutputKeyClass(Text.class);              
        job.setOutputValueClass(IntWritable.class);

        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

5.配置编译器
这里写图片描述
这里写图片描述

注意:第三个框里只需添入输入路径和输出路径即可

6、将数据导入到你的程序中
这里写图片描述
注意:不要创建output目录,系统会自动创建。否则会报目录已存在的错。

simple.txt

0067011990999991950051507004+68750+023550FM-12+038299999V0203301N00671220001CN9999999N9+00001+99999999999
0043011990999991950051512004+68750+023550FM-12+038299999V0203201N00671220001CN9999999N9+00221+99999999999
0043011990999991950051518004+68750+023550FM-12+038299999V0203201N00261220001CN9999999N9-00111+99999999999
0043012650999991949032412004+62300+010750FM-12+048599999V0202701N00461220001CN0500001N9+01111+99999999999
0043012650999991949032418004+62300+010750FM-12+048599999V0202701N00461220001CN0500001N9+00781+99999999999

7.运行
出错:
这里写图片描述
缺少hadoop.dll和winutils.exe

hadoop.2.7.2的hadoop.dll和winutils.exe下载后,粘贴在hadoop-2.7.2/bin目录下

运行成功:
output目录下有输出的结果文件
output\part-r-00000.txt

1949 111
1950 22

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Window下Intellij Idea本地hadoop运行环境

资源准备下载代码资源包 下在hadoop-2.6.0安装包,可以去官网下载 下载winutils等文件 bin目录下载地址 等级太低上传不了完整版,就只上传了bin 目录,下载好 hadoop-2.6...

Intellij idea开发Hadoop MapReduce程序

一、下载一个Hadoop包 http://mirrors.hust.edu.cn/apache/hadoop/common/ 二、打开Idea新建一个java项目 ...

win 10 + maven + idea 15 + Hadoop 2.7.3开发环境配置

前言今天想在win 10上搭一个Hadoop的开发环境,希望能够直联Hadoop集群并提交MapReduce任务,这里给出相关的关键配置。步骤关于maven以及idea的安装这里不再赘述,非常简单。 ...

hadoop实践(五)win10+eclipse+hadoop2.6.4 开发环境

本人环境为win10(才从win7升级)         eclipse是  Kepler Service Release 1         在win10下,安装了vm workstation,其上...
  • csolo
  • csolo
  • 2016年06月15日 00:23
  • 5947

windows下idea编写WordCount程序,并打jar包上传到hadoop集群运行

前提条件 1.已在虚拟机中安装了hadoop集群环境                   版本                          windows 10                 ...

IDEA 调试 Hadoop程序

原文地址:http://blog.csdn.net/uq_jin/article/details/522351211、解压Hadoop到任意目录比如:D:\soft\dev\hadoop-2.7.22...

Hadoop Intellij IDEA本地开发环境搭建

首先我们需要新建一个java工程用于开发Mapper与Reducer,同时我们也需要导入hadoop的依赖包,这些包可以在hadoop的 share/hadoop 目录下找到,你可以把这些包单独取出来...

IDEA + Hadoop工程入门实例 ——Word Count编程

一、       启动IDEA 进入/home/iespark/hadoop_program_files/idea-IC-143.1184.17/bin,执行“./idea.sh”。 二、    ...

IntelliJ IDEA搭建Hadoop开发环境

前言        这是关于Hadoop的系列文章。 Hadoop基本概念指南 Eclipse搭建Hadoop开发环境二三事 IntelliJ IDEA搭建Hadoop开发环境...

intellij idea本地开发调试hadoop的方法

我的intellij idea版本是14,hadoop版本2.6,使用《hadoop权威指南》的天气统计源码作为示例。 1、首先在hadoop官网上下载hadoop到本地(不需要进行环境变量的配置,仅...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:win10 Intellij idea开发Hadoop MapReduce程序单机测试
举报原因:
原因补充:

(最多只允许输入30个字)