hadoopMapReduce小例子

今天做了一个简单的mapreduce小程序,目的是熟悉一下怎么在真实的集群上跑自己的mr程序,之前写的都是在单机模拟运行的。功能很简单就是求一个key对应值里面最大的。

[b]开发环境:[/b]

hadoop2.5

jdk1.6

eclipse3.7

1、创建一个java工程,加入如下jar包:

hadoop-common-2.5.2.jar

hadoop-mapreduce-client-common-2.5.2.jar

hadoop-mapreduce-client-core-2.5.2.jar

hadoop-mapreduce-client-jobclient-2.5.2.jar

2、主要类


MaxNumberDriver.java用于启动mapreduce程序的入口

[code="java"]package org.qhy.mapreduce.maxnumber;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
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 org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;


public class MaxNumberDriver extends Configured implements Tool{

@Override
public int run(String[] arg0) throws Exception {
if(arg0.length {


@Override

protected void map(LongWritable key, Text value, Mapper.Context context)

throws IOException, InterruptedException {

String lineVal = value.toString();

String[] arrayVal = lineVal.split(",");

String year= arrayVal[0],number=arrayVal[1];

context.write(new Text(year), new IntWritable(Integer.parseInt(number)));

}

}


MaxNumberReducer.java reducer实现类


package org.qhy.mapreduce.maxnumber;


import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;


import org.apache.commons.lang3.math.NumberUtils;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Reducer;


public class MaxNumberReducer extends Reducer {


// @Override

// protected void reduce(Text year, java.lang.Iterable numbers,

// org.apache.hadoop.mapreduce.Reducer.Context context)

// throws java.io.IOException, InterruptedException {

// int maxValue = Integer.MIN_VALUE;

// for(IntWritable value: numbers){

// maxValue = Math.max(maxValue,value.get());

// }

// context.write(year, new IntWritable(maxValue));

// }





/**

* {@inheritDoc}使用第三方Apache Lang包

* @see org.apache.hadoop.mapreduce.Reducer#reduce(KEYIN, java.lang.Iterable, org.apache.hadoop.mapreduce.Reducer.Context)

*/

@Override

protected void reduce(Text year, java.lang.Iterable numbers,

org.apache.hadoop.mapreduce.Reducer.Context context)

throws java.io.IOException, InterruptedException {

Iterator itr = numbers.iterator();

int length=0;

List list = new ArrayList();

while(itr.hasNext()){

IntWritable iwVal = itr.next();

list.add(iwVal.get());

length++;

}

int[] array = new int[length];

for(int i=0;iexport->jar->选择导出路径(一路next)-> 记得选一下main函数类

4、运行

将jar放到系统上linux上

./hadoop jar ~/testData/MRMaxNumber.jar hdfs://hdp01nn:9000/maxnumber hdfs://hdp01nn:9000/testOut/maxnumber4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值