`
字母哥
  • 浏览: 70307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hadoop处理手机流量小例子

阅读更多
最近一直在学习hadoop  这是一个简单的关于MapReduce的示例
通过实现map和reduce2个函数完成操作

首先定义一个自定义对象
class MyWriterble implements Writable{
	long UpPackNum;
	long DownPackNum;
	long UpPayLoad;
	long DownPayLoad;
	
	public MyWriterble(){}
	public MyWriterble(String UpPackNum,String DownPackNum,String UpPayLoad,String DownPayLoad){
		this.UpPackNum=Long.parseLong(UpPackNum);
		this.DownPackNum=Long.parseLong(DownPackNum);
		this.UpPayLoad=Long.parseLong(UpPayLoad);
		this.DownPayLoad=Long.parseLong(DownPayLoad);
	}
	
	@Override
	public void readFields(DataInput in) throws IOException {
		// TODO Auto-generated method stub
		this.UpPackNum=in.readLong();
		this.DownPackNum=in.readLong();
		this.UpPayLoad=in.readLong();
		this.DownPayLoad=in.readLong();
		
	}

	@Override
	public void write(DataOutput out) throws IOException {
		out.writeLong(UpPackNum);
		out.writeLong(DownPackNum);
		out.writeLong(UpPayLoad);
		out.writeLong(DownPayLoad);
	}
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return UpPackNum + "\t" + DownPackNum + "\t" + UpPayLoad + "\t" + DownPayLoad;
	}
	
}

其中类必须实现Writable接口 和Java中的可序列化接口一样

然后分别定义2个类 用于重写map和reduce方法
class MyMappera extends Mapper<LongWritable,Text, Text,MyWriterble>{
	protected void map(LongWritable key, Text value,Context context) throws IOException ,InterruptedException {
		String vals[]=value.toString().split("\t");
		MyWriterble my=new MyWriterble(vals[21], vals[22], vals[23], vals[24]);
		context.write(new Text(vals[2]),my);
	};
}

Mapper中的泛型 分别代表k1,v1,k2,v2类型
k1,v1即使分割每一行数据得到的键值对,key为位置,value为行内容
k2,v2为输出值得类型,k2表示每个手机号,所以为Text

class myreducers extends Reducer<Text,MyWriterble,Text,MyWriterble>{
	protected void reduce(Text text, java.lang.Iterable<MyWriterble> wt,Context context) throws IOException ,InterruptedException {
		long UpPackNum=0l;
		long DownPackNum=0l;
		long UpPayLoad=0l;
		long DownPayLoad=0l;
		for(MyWriterble mt:wt){
			UpPackNum=UpPackNum+mt.UpPackNum;
			DownPackNum=DownPackNum+mt.DownPackNum;
			UpPayLoad=UpPayLoad+mt.UpPayLoad;
			DownPayLoad=DownPayLoad+DownPayLoad;
		}
		
		context.write(text, new MyWriterble(UpPackNum+"", DownPackNum+"", UpPayLoad+"", DownPayLoad+""));
		
	};


public class MyRIZHI {
	public static void main(String[] args) throws Exception{
		final String INPUT_PATHs = "hdfs://chaoren:9000/ncmdp_08500001_Net_20130515164000.dat";
		final String OUT_PATHs = "hdfs://chaoren:9000/out";
		Job job=new Job(new Configuration(),MyRIZHI.class.getSimpleName());
		//1.1 指定输入文件路径
		FileInputFormat.setInputPaths(job, INPUT_PATHs);
		//指定哪个类用来格式化输入文件
		job.setInputFormatClass(TextInputFormat.class);
		
		//1.2指定自定义的Mapper类
		job.setMapperClass(MyMappera.class);
		//指定输出<k2,v2>的类型
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(MyWriterble.class);
		//1.3 指定分区类
		job.setPartitionerClass(HashPartitioner.class);
		job.setNumReduceTasks(1);
		//1.4 TODO 排序、分区
		
		//1.5  TODO (可选)合并
				
		//2.2 指定自定义的reduce类
		job.setReducerClass(myreducers.class);
		//指定输出<k3,v3>的类型
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(MyWriterble.class);
		
		//2.3 指定输出到哪里
		FileOutputFormat.setOutputPath(job, new Path(OUT_PATHs));
		//设定输出文件的格式化类
		job.setOutputFormatClass(TextOutputFormat.class);
		//把代码提交给JobTracker执行
		job.waitForCompletion(true);
		
		
		
	}
}
3
0
分享到:
评论
4 楼 字母哥 2015-03-11  
hae 写道
你的输入文件是从哪里来的,格式是什么样的。

已经上传
3 楼 字母哥 2015-03-11  
lvwenwen 写道
文件格式是什么样。

已经上传
2 楼 lvwenwen 2015-03-10  
文件格式是什么样。
1 楼 hae 2015-03-10  
你的输入文件是从哪里来的,格式是什么样的。

相关推荐

    hadoop项目手机流量统计.zip

    hadoop项目手机流量统计.zip

    基于Hadoop网站流量日志数据分析系统.zip

    基于Hadoop网站流量日志数据分析系统 1、典型的离线流数据分析系统 2、技术分析 - Hadoop - nginx - flume - hive - mysql - springboot + mybatisplus+vcharts nginx + lua 日志文件埋点的 基于Hadoop网站流量...

    hadoop流量统计程序

    "hadoop流量统计程序"是基于Hadoop平台设计的一种工具,用于收集、处理和分析网络流量数据。这个程序能够帮助网络管理员或者数据分析人员有效地监控和理解网络活动,识别潜在的流量异常,以及优化网络资源的分配。 ...

    基于Hadoop的网络流量分流并行化设计与实现

    综上所述,本文介绍了一种基于Hadoop平台的网络流量分流并行处理系统,该系统充分利用了Hadoop的强大计算能力和分布式存储特性,能够高效地处理大规模网络流量。未来的研究方向可以进一步探索如何优化MapReduce作业...

    Hadoop学习统计上网流量源数据

    总结来说,Hadoop在处理大规模上网流量源数据时,提供了强大的分布式存储和计算能力。通过对"HTTP_.dat"文件的分析,我们可以获取深入的网络洞察,优化网络资源分配,提升用户体验,同时为网络安全提供数据支持。这...

    hadoop用户流量分析系统原始数据

    一个hadoop的用户流量分析系统的原始数据资料,可用作测试,一般学习等。 博客地址:http://blog.csdn.net/sdksdk0

    hadoop的小例子,hadoop的小例子

    小例子是自己写的,目的是让自己熟悉一下如何在集群上运行一个mapreduce项目,大家可以参考此例子学习hadoop,对入门很有帮助。小例子是自己写的,目的是让自己熟悉一下如何在集群上运行一个mapreduce项目,大家可以...

    基于Hadoop的网站流量日志数据分析系统项目源码+教程.zip

    基于Hadoop网站流量日志数据分析系统项目源码+教程.zip网站流量日志数据分析系统 典型的离线流数据分析系统 技术分析 hadoop nginx flume hive sqoop mysql springboot+mybatisplus+vcharts 基于Hadoop网站流量日志...

    基于Hadoop短视频流量数据分析与可视化.docx

    1. 数据处理:Hadoop 可以用来处理短视频流量数据,实现数据的快速处理和分析。 2. 数据可视化:Hadoop 提供了多种数据可视化工具,如 Tableau、QlikView 等,可以用来将短视频流量数据转换为图形化的形式。 Hadoop...

    第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf

    第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件...

    hadoop大数据处理例子

    关于常用的一个hadoop的python脚本代码,包括两种字典,一种是file分发的,一种是靠输入并且,一起经过shuffle排序,再进行计算的。限于文件大小限制,只有代码,不包含字典文件,所以不能直接运行,请见谅

    Hadoop-1.2.1 单词统计例子

    在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分析。这个“Hadoop-1.2.1 单词统计例子...通过分析这个例子,开发者可以逐步掌握Hadoop的编程模型,并为处理更复杂的数据分析任务打下坚实的基础。

    《Hadoop海量数据处理》高清完整PDF版

    本书《Hadoop海量数据处理》是一本专注于Hadoop技术的专业技术书籍,旨在向读者介绍Hadoop生态系统的关键组件、核心概念以及在处理海量数据时的应用方法。全书分为基础篇、应用篇和总结篇三个部分,全面涵盖了Hadoop...

    第五章(Hadoop大数据处理实战)Hadoop的IO操作.pdf

    第五章(Hadoop大数据处理实战)Hadoop的IO操作.pdf第五章(Hadoop大数据处理实战)Hadoop的IO操作.pdf第五章(Hadoop大数据处理实战)Hadoop的IO操作.pdf第五章(Hadoop大数据处理实战)Hadoop的IO操作.pdf第五章(Hadoop大...

    hadoop项目--网站流量日志分析--4.docx

    Hadoop 项目网站流量日志分析 Hadoop 项目中,网站流量日志分析是一个非常重要的应用场景。在这种场景中,对数据采集部分的可靠性、容错能力要求通常不会非常严苛,但需要注意的是结合语境明白是何种含义的数据采集...

    基于Hadoop网站流量分析系统源码(课设项目).zip

    基于Hadoop网站流量分析系统源码(课设项目).zip基于Hadoop网站流量分析系统源码(课设项目).zip基于Hadoop网站流量分析系统源码(课设项目).zip基于Hadoop网站流量分析系统源码(课设项目).zip基于Hadoop网站流量分析...

Global site tag (gtag.js) - Google Analytics