`
serisboy
  • 浏览: 169585 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hadoop--mapreduce代码之排序

阅读更多
package com.hadoop.sample;

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
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.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;

public class Sort {
	//map将输入中的value化成IntWritable类型,作为输出的key
	public static class Map extends Mapper<Object,Text,IntWritable,IntWritable>{
		private static IntWritable data = new IntWritable();
		public void map(Object key,Text value,Context context) throws IOException,InterruptedException{
			 String line = value.toString();
			 data.set(Integer.parseInt(line));
			 context.write(data, new IntWritable(1));
		}
	}
	//reduce将输入中的key复制到输出的value上,然后根据输入的
	//value-list中的元素的个数决定key的输出次数
	//用全局的linenum来代表key的位次
	public static class Reduce extends Reducer<IntWritable,IntWritable,IntWritable,IntWritable>{
		private static IntWritable linenum = new IntWritable(1);
		public void reduce(IntWritable key,Iterable<IntWritable> values,Context context) throws IOException,InterruptedException{
			for(IntWritable val:values){
				context.write(linenum, key);
				linenum = new IntWritable(linenum.get()+1);
			}
			
		}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		Configuration conf = new Configuration();
		String[] otherArgs = new GenericOptionsParser(conf,args).getRemainingArgs();
		if(otherArgs.length != 2){
			System.err.println("Usage WordCount <int> <out>");
			System.exit(2);
		}
		Job job = new Job(conf,"Sort");
		job.setJarByClass(Sort.class);
		job.setMapperClass(Map.class);
		job.setCombinerClass(Reduce.class);
		job.setReducerClass(Reduce.class);
		job.setOutputKeyClass(IntWritable.class);
		job.setOutputValueClass(IntWritable.class);
		FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
		FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
		System.exit(job.waitForCompletion(true) ? 0 : 1);
	}

}
分享到:
评论

相关推荐

    Hadoop中MapReduce基本案例及代码(五)

    对相同分区的数据,按照key进行排序(默认按照字典排序)、分组。相同key的value放在一个集合中。 (可选)分组后对数据进行归约。 注意:MapReduce中,Mapper可以单独存在,但是Reducer不能存在。

    Hadoop中MapReduce基本案例及代码(四)

    如果想将mapreduce结果排序,需将排序对象作为键值。 案例:将利润求和后按照顺序排序 数据源 profit.txt 编号 | 姓名 | 收入 | 支出 1 ls 2850 100 2 ls 3566 200 3 ls 4555 323 1 zs 19000 2000 2 zs 28599 3900 3...

    mapreduce案例代码及案例涉及文件

    了解map和reduce工作原理,以及排序,分组,分区设置,有详细的注释,方便查看学习,适合入门初学者练手

    Hadoop从入门到上手企业开发

    060 MapReduce执行流程之Shuffle和排序流程以及Map端分析 061 MapReduce执行流程之Reduce端分析 062 MapReduce Shuffle过程讲解和Map Shuffle Phase讲解 063 Reduce Shuffle Phase讲解 064 源代码跟踪查看Map Task和...

    Hadoop大作业排序.zip

    Hadoop大作业排序代码 由于 MapReduce 中对 key 进行比较和排序,而 key 可以是任何实 现了 Writable 接口的类。 在 java 中,要实现类的大小比较可以实现 Comparable 接口并通 过重写 compareTo 方法来实现。 在 ...

    Hadoop实战(第2版)

    combiner技术点49 超炫的使用比较器的快速排序6.4.4 减轻倾斜技术点50 收集倾斜数据技术点51 减轻reducer 阶段倾斜6.4.5 在MapReduce 中优化用户的Java 代码6.4.6 数据序列化6.5 本章小结第4 部分 ...

    Hadoop权威指南 第二版(中文版)

    Hadoop的I/O、MapReduce应用程序开发;MapReduce的工作机制;MapReduce的类型和格式;MapReduce的特性;如何构建Hadoop集群,如何管理Hadoop;Pig简介;Hbase简介;Hive简介;ZooKeeper简介;开源工具Sqoop,最后还...

    Hadoop权威指南(中文版)2015上传.rar

    在Apache Hadoop上的TB字节数量级排序 使用Pig和Wukong来探索10亿数量级边的 网络图 测量社区 每个人都在和我说话:Twitter回复关系图 (度)degree 对称链接 社区提取 附录A 安装Apache Hadoop 附录B Cloudera’s ...

    hadoop实现计数器

    hadoop实现计数器,利用mapreduce进行排序,同时可以实时跟踪整个过程以及每个节点的参与情况

    基于MapReduce的学生平均成绩统计

    利用MapReduce实现了求学生成绩的最大值,最小值,及成绩分布。结合我的博客“MapReduce之学生平均成绩”看,效果更好。

    最新Hadoop的面试题总结

    12、描述mapReduce有几种排序及排序发生的阶段 1)排序的分类: (1)部分排序: MapReduce根据输入记录的键对数据集排序。保证输出的每个文件内部排序。 (2)全排序: 如何用Hadoop产生一个全局排序的文件?最简单...

    基于MapReduce的流量统计(完整Java代码)包括源文件、输出文件、jar包、代码

    根据数据文件phone_data.txt按照如下要求实现MapReduce分析程序编写: 需求: 1)统计每一个手机号耗费的总上行流量、下行流量、总流量 2)将统计结果按照手机归属地不同号段(手机号前3位)输出到不同文件中 3)根据...

    hadoop中级班视频教程.zip

    目录网盘文件永久链接 1-MapReduce.rar 2 MapReducel的源简介和自定义类型rar 3 mapReducel的剩余核环节解rar 4 MapReduce的自定V排序和分组rar 5 hadoop的集群安装和安全模式个绍rar 代码部分rar

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    6.4.5 在MapReduce 中优化用户的Java 代码 6.4.6 数据序列化 6.5 本章小结 第4 部分 数据科学. 7 数据结构和算法的运用 7.1 使用图进行数据建模和解决问题 7.1.1 模拟图 7.1.2 最短路径算法 技术...

    2017最新大数据架构师精英课程

    93_job 全排序-自定义分区类2 n% h" `: b4 c) C3 J9 S 94_job二次排序5 t3 Z2 R- ]( a: s* c0 Z 95_从db输入数据进行mr计算: L. M4 I6 y, R2 l/ u/ L 96_输出数据到db中 97_NLineInputFormat& u( k1 T& z( O# P, S* ...

    HadoopMapReduce-分区、排序、切片等.zip

    内容概要: HadoopMapReduce-分区、排序、切片实现Java源代码; HadoopMapReduce-分区、排序、切片的原理,流程,分析,笔记等等

    机器学习中大数据对数据的排序

    简单的源代码,针对大数据中的数据 对数据进行的排序。 mapreduce

    基于分布式数据库的图像检索系统

    =&gt; 从hdfs中读取结果(MapReduce输出默认根据中间结果的Key值排序) =&gt; 从'dbinfo'中读取相应的图片信息,并输出结果 代码:queryMR.py, sift.py, SortDriver.java 3. **非分布式检索(做对比)** 利用倒排索引,...

    Spark-terasort:Spark Terasort基准测试

    它最初是用来测量Apache:trade_mark:Hadoop:registered:集群的MapReduce性能的。 在此项目中,代码将在Scala中重写,以测量Spark集群的性能。 它是对Hadoop集群的存储层(HDFS)和计算层(YARN / Spark)进行组合...

Global site tag (gtag.js) - Google Analytics