需求:对文件中的数据进行排序。

样本:sort.log

10

13

10

20

输出:1 10

2 10

3 13

4 20

分析部分:

mapper分析:

1、<k1,v1>k1代表:行位置编号,v1代表:一行数据

2、<k2,v2>k2代表:一行数据,v2代表:此处为1.

reduce分析:

3、<k3,v3>k3代表:相同的key,v3代表:list<int>

4、合并输出:<k4,v4>k4代表:递增编号,v4代表:key值。

程序部分:

SortMapper类:

package com.cn.sort;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;public class SortMapper extends Mapper<Object, Text, IntWritable, IntWritable> {String line = null;@Overrideprotected void map(Object key, Text value, Context context)throws IOException, InterruptedException {line = value.toString();int lineValue = Integer.parseInt(line);context.write(new IntWritable(lineValue), new IntWritable(1));}
}

SortReduce类

package com.cn.sort;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Reducer;public class SortReduce extends Reducer<IntWritable, IntWritable, IntWritable, IntWritable>{IntWritable lineNum = new IntWritable(1);@Overrideprotected void reduce(IntWritable key, Iterable<IntWritable> values,Context context)throws IOException, InterruptedException {for(IntWritable value : values){context.write(lineNum, key);lineNum = new IntWritable(lineNum.get()+1);}}
}

DataSort类

package com.cn.sort;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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.GenericOptionsParser;/*** 数据排序* @author root**/
public class DataSort {public static void main(String[] args) throws Exception {Configuration conf = new Configuration();String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();if (otherArgs.length != 2) {System.err.println("Usage: DataSort  ");System.exit(2);}Job job = new Job(conf, "Data Sort");  job.setJarByClass(DataSort.class);//设置输入输出文件目录FileInputFormat.addInputPath(job, new Path(otherArgs[0]));FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));//设置mapper和reduce处理逻辑类job.setMapperClass(SortMapper.class);job.setReducerClass(SortReduce.class);//设置输出key-value类型job.setOutputKeyClass(IntWritable.class);job.setOutputValueClass(IntWritable.class);//提交作业并等待它完成System.exit(job.waitForCompletion(true) ? 0 : 1);}}

没事就把自己写过的代码总结哈。

hadoop程序MapReduce之DataSort相关推荐

  1. hadoop程序MapReduce之SingletonTableJoin

    需求:单表关联问题.从文件中孩子和父母的关系挖掘出孙子和爷奶关系 样板:child-parent.txt xiaoming daxiong daxiong alice daxiong jack 输出: ...

  2. hadoop程序运行

    hadoop命令的使用: Usage: hadoop [--config confdir] COMMAND 这里COMMAND为下列其中一个: 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  3. Hadoop 新 MapReduce 框架 Yarn 详解

    Hadoop MapReduceV2(Yarn) 框架简介 原 Hadoop MapReduce 框架的问题 对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储 ...

  4. Hadoop:The Definitive Guid 总结 Chapter 1~2 初识Hadoop、MapReduce

    1.数据存储与分析 问题:当磁盘的存储量随着时间的推移越来越大的时候,对磁盘上的数据的读取速度却没有多大的增长 从多个磁盘上进行并行读写操作是可行的,但是存在以下几个方面的问题: 1).第一个问题是硬 ...

  5. Hadoop之MapReduce面试知识复习

    Hadoop之MapReduce面试知识复习 目录 谈谈Hadoop序列化和反序列化及自定义bean对象实现序列化? FileInputFormat切片机制 在一个运行的Hadoop 任务中,什么是I ...

  6. Hadoop之MapReduce工作流程

    Hadoop之MapReduce工作流程 目录 流程示意图 流程详解 注意 1. 流程示意图 MapReduce工作流程 流程示意图,如下图 2. 流程详解 上面的流程是整个mapreduce最全工作 ...

  7. Hadoop之MapReduce入门

    Hadoop之MapReduce概述 目录 MapReduce定义 MapReduce优缺点 MapReduce核心思想 MapReduce进程 MapReduce编程规范 MapReduce案例实操 ...

  8. 使用ToolRunner运行Hadoop程序基本原理分析

    为了简化命令行方式运行作业,Hadoop自带了一些辅助类.GenericOptionsParser是一个类,用来解释常用的Hadoop命令行选项,并根据需要,为Configuration对象设置相应的 ...

  9. mrunit_使用MRUnit测试Hadoop程序

    mrunit 这篇文章将略微绕开使用MapReduce实现数据密集型处理中发现的模式,以讨论同样重要的测试. 汤姆•惠勒 ( Tom Wheeler)在纽约2012年Strata / Hadoop W ...

最新文章

  1. @Service注解的使用
  2. 第九周项目实践2 二叉树遍历的递归算法
  3. linux 环境变量 term,linux – TERM环境变量未设置
  4. 高频面试题1:自增边量
  5. android java 时间格式化_(Java / Android)计算两个日期之间的日期,并以特定格式显示结果...
  6. asp.net MVC 验证错误信息本地化
  7. 不要在给自己不学习找借口了,否则…
  8. devexpress 打印一个form界面_通过回车键提交form表单时,你是否注意过这些问题?...
  9. 2013年6月12日星期三
  10. 10g手动创建数据库
  11. gram矩阵的性质_第十七课:正交矩阵和GramSchmidt正交化——MIT线性代数课程学习笔记...
  12. 声压级和灵敏度的关系
  13. Cookie 版购物车
  14. Linux系统启动过程分析
  15. c语言程序设计 江汉大学,C语言程序设计B卷
  16. 430单片机实现三人投票表决器_基于51单片机的三人表决器设计.doc
  17. js 生成二维码及打印
  18. 计算机专业的有关的外文文献,计算机专业外文外文 计算机专业专著类参考文献有哪些...
  19. 苹果唯冠商标战对iPad3的影响:iPad3太TM贵,肾都不够卖了!
  20. BlackBerry上网初体验

热门文章

  1. matlab2014调用vs2015进行混合编译生成mex文件
  2. 21天 Jenkins打卡-Day1 环境准备
  3. dl360 g7安装linux,HPDL360G7服务器安装说明.ppt
  4. 看了无数文章,今天终于理解这些性能指标了
  5. 自动化测试:Selenium8种元素定位+unittest框架设计
  6. matlab2016a 问题及解决方法记录
  7. PHP中的方形按钮怎么敲,php 魔术方法使用说明
  8. php方便,两个方便测试PHP特性的小程序
  9. 基于深度学习的大豆病虫害自动计数(SLIC超像素方法进行图像分割)
  10. ftp 200 227 451linux,FTP无法链接