`
GQM
  • 浏览: 24927 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[实验]hadoop例子 在线用户分析

 
阅读更多
一个简单的业务场景和例子。由wordcount例子改写。

业务场景:
每个用户有在线事件,并带有日志。分析一段时间内的在线的用户以及他们的事件数。
备注:假设事件日志中以逗号分割字段,第5个字段为用户识别码
public class ActiveUserMapper extends Mapper<Object, Text, Text, IntWritable> {

	private final static IntWritable one = new IntWritable(1);
	private Text user = new Text();

	protected void map(Object key, Text value, Context context)
			throws IOException, InterruptedException {
		StringTokenizer itr = new StringTokenizer(value.toString(), ",");
		int index = 0;
		while (itr.hasMoreTokens()) {
			if (index == 4) {
				user.set(itr.nextToken());
				context.write(user, one);
				break;
			} else {
				itr.nextToken();
			}
			index++;
		}
	}
}

public class ActiveUserReducer extends
		Reducer<Text, IntWritable, Text, IntWritable> {

	private IntWritable events = new IntWritable();

	@Override
	protected void reduce(Text key, Iterable<IntWritable> values,
			Context context) throws IOException, InterruptedException {
		int sum = 0;
		for (IntWritable val : values) {
			sum += val.get();
		}
		events.set(sum);
		context.write(key, events);
	}
}

public class ActiveUserMRDriver extends Configured implements Tool {

	@Override
	public int run(String[] args) throws Exception {
		if(args.length != 2){
			System.out.printf("Usage %s [generic options] <in> <out>\n", getClass().getName());
			ToolRunner.printGenericCommandUsage(System.out);
			return -1;
		}
		Configuration conf = new Configuration();
		conf.set("fs.default.name", "hdfs://node04vm01:9000");
		
		Job job = new Job(conf, "active user analyst");
	    job.setJarByClass(ActiveUserMRDriver.class);
	    job.setMapperClass(ActiveUserMapper.class);
	    job.setCombinerClass(ActiveUserReducer.class);
	    job.setReducerClass(ActiveUserReducer.class);
	    
	    job.setOutputKeyClass(Text.class);
	    job.setOutputValueClass(IntWritable.class);
	    
	    FileInputFormat.setInputPaths(job, new Path(args[0]));
	    FileOutputFormat.setOutputPath(job, new Path(args[1]));

		return job.waitForCompletion(true) ? 0 : 1;
	}
	
	
	public static void main(String[] args) throws Exception {
		int exitCode = ToolRunner.run(new ActiveUserMRDriver(), args);
		System.exit(exitCode);
	}
}


job报告部分:
13/08/30 15:25:50 INFO mapred.JobClient: Job complete: job_local206120026_0001
13/08/30 15:25:50 INFO mapred.JobClient: Counters: 22
13/08/30 15:25:50 INFO mapred.JobClient:   File Output Format Counters
13/08/30 15:25:50 INFO mapred.JobClient:     Bytes Written=40450120
13/08/30 15:25:50 INFO mapred.JobClient:   FileSystemCounters
13/08/30 15:25:50 INFO mapred.JobClient:     FILE_BYTES_READ=907603353
13/08/30 15:25:50 INFO mapred.JobClient:     HDFS_BYTES_READ=4244630128
13/08/30 15:25:50 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=1520436699
13/08/30 15:25:50 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=40450120
13/08/30 15:25:50 INFO mapred.JobClient:   File Input Format Counters
13/08/30 15:25:50 INFO mapred.JobClient:     Bytes Read=612273464
13/08/30 15:25:50 INFO mapred.JobClient:   Map-Reduce Framework
13/08/30 15:25:50 INFO mapred.JobClient:     Reduce input groups=2886293
13/08/30 15:25:50 INFO mapred.JobClient:     Map output materialized bytes=103629708
13/08/30 15:25:50 INFO mapred.JobClient:     Combine output records=12122417
13/08/30 15:25:50 INFO mapred.JobClient:     Map input records=8895828
13/08/30 15:25:50 INFO mapred.JobClient:     Reduce shuffle bytes=0
13/08/30 15:25:50 INFO mapred.JobClient:     Physical memory (bytes) snapshot=0
13/08/30 15:25:50 INFO mapred.JobClient:     Reduce output records=2886293
13/08/30 15:25:50 INFO mapred.JobClient:     Spilled Records=17879555
13/08/30 15:25:50 INFO mapred.JobClient:     Map output bytes=126802892
13/08/30 15:25:50 INFO mapred.JobClient:     CPU time spent (ms)=0
13/08/30 15:25:50 INFO mapred.JobClient:     Total committed heap usage (bytes)=8510898176
13/08/30 15:25:50 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=0
13/08/30 15:25:50 INFO mapred.JobClient:     Combine input records=15261107
13/08/30 15:25:50 INFO mapred.JobClient:     Map output records=8895828
13/08/30 15:25:50 INFO mapred.JobClient:     SPLIT_RAW_BYTES=1340
13/08/30 15:25:50 INFO mapred.JobClient:     Reduce input records=5757138
分享到:
评论

相关推荐

    陌陌聊天数据实现FineBI数据分析报表

    在陌陌聊天数据的例子中,Hive可以帮助我们组织和管理聊天记录,使其更易于分析。 3. **FineBI**:这是一款强大的商业智能工具,支持自助式数据分析和可视化。FineBI能够直接连接到Hadoop或Hive,提取数据并创建...

    my hadoop demo

    【描述】中的“hadoop test cesi 代码 粒子 例子”可能是指进行Hadoop测试的代码示例,其中“cesi”可能是项目或测试用例的缩写,而“粒子”可能是指数据粒度或处理的特定部分。这暗示我们将深入理解Hadoop的测试...

    Hadoop应用开发-实验指导书.doc

    根据提供的文档信息,我们可以将Hadoop应用开发的相关知识点进行详细阐述。...通过以上几个实验的学习,可以全面掌握Hadoop的基本操作和应用开发流程,为进一步深入学习Hadoop的大数据处理技术打下坚实的基础。

    demo_11.11_storm-spark-hadoop:hadoop_storm_spark结合实验的例子,模拟淘宝双11节,根据订单详细信息,汇总出总销售量,各个省份销售排行,以及后期SQL分析,数据分析,数据挖掘等。 --------大概流程------- 第一阶段(storm实时报表) 第二阶段(离线报表)第三阶段(大规模订单即席查询,和多维度查询) 第四阶段(数据挖掘和图计算)

    -_11.11_storm-spark-hadoophadoop_storm_spark结合实验的例子,模拟淘宝双11节,根据订单详细信息,汇总出总销售量,各个省份销售排行,以及后期SQL分析,数据分析,数据挖掘等。--------大概流程-------第一阶段...

    大数据实验5实验报告:MapReduce 初级编程实践

    在这个实验中,我们使用了Hadoop 3.2.2版本。 实验的目标是合并两个输入文件A和B,并去除其中重复的内容,生成一个新的输出文件C。输入文件A和B包含一些日期和对应的字符,例如: ``` 20170101 x 20170102 y ... ``...

    結合雲端分散儲存與Nutch搜尋引擎之影音網站

    - **Hadoop实验平台配置**:项目使用Hadoop Distributed File System (HDFS)进行数据存储,并且在实验平台中进行了相应的配置。 - **Nutch搜索引擎**:建立在Hadoop之上的开源搜索引擎,利用HDFS作为存储索引数据的...

    Ch4-Hadoop系统安装运行与程序开发1

    实验1:安装单机Hadoop系统与WordCount词频统计,是学习Hadoop的典型实践。WordCount是Hadoop示例程序,用于统计文本中单词出现的频率,它是理解MapReduce工作流程的直观例子。 在软件环境中,Hadoop运行在Linux...

    6.Hadoop入门进阶课程_第6周_MapReduce应用案例.pdf

    综上所述,MapReduce应用案例文档深入地介绍了MapReduce编程模型在Hadoop生态系统中的实际使用,包括对join操作的细节分析,以及如何搭建Hadoop环境,如何上传和管理测试数据。此外,文档还提供了Hadoop学习资源的...

    云服务器上搭建大数据伪分布式环境

    ###### 6.1 查看Hadoop自带的例子 ```bash hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar ``` 可以看到Hadoop提供的一些示例程序。 ###### 6.2 在HDFS中创建用户目录...

    实验报告-大数据技术与应用-微课视频版-肖政宏-清华大学出版社.docx

    实验让学生通过建立实际例子理解MapReduce的工作流程,包括数据切片、Map函数的执行和Reduce函数的聚合。 通过这些实验,学生能够深入理解大数据技术的基础,为后续的大数据应用开发和分析奠定坚实的基础。在实验...

    大数据实验报告 (3).docx

    实验中创建例子文件并上传到HDFS,这是HDFS的基本操作。MapReduce则是一种并行处理模型,由“Map”阶段和“Reduce”阶段组成。Map阶段将数据拆分成独立的键值对,处理后将结果传递给Reduce阶段进行聚合,最终生成...

    MapReduce数据分析实战

    综上所述,文档详细介绍了MapReduce数据分析的实战技巧和步骤,通过具体的例子展示了如何利用Hadoop进行大规模数据处理。文中不仅包含了MapReduce的基础概念,还提供了许多实用的代码片段和操作细节,为有志于深入...

    西农20级云计算实验报告

    云计算是一种通过互联网提供计算资源和服务的模式,它允许用户按需访问和使用存储、计算能力、应用程序和其他IT资源,而无需直接拥有和维护这些资源。这个实验报告聚焦于20级学生的云计算学习体验,其中包含了编程...

    spark上机实验手册

    Spark是一种开源的分布式大数据处理框架,其上机实验手册是针对想要独立完成Spark安装部署和基础开发学习的用户设计的。通过这份手册,用户可以在没有任何课堂辅导的情况下,自行完成安装、配置和基础的编程实践。 ...

    第10章 Flume组件安装配置.docx

    保存并退出编辑器,然后切换到 `hadoop` 用户并执行 `source /etc/profile` 命令,使环境变量更改立即生效。 3. **Flume组件部署**: - **步骤一**:确保已经完成了环境变量的设置,并使其对所有用户生效。 - **...

    ####这是一篇对软件测试实验报告详细介绍(含代码)

    ### MapReduce基础实战详解 ...MapReduce不仅适用于简单的单词计数任务,还广泛应用于搜索引擎索引构建、用户行为分析等复杂场景。希望这次实战能帮助你更好地掌握MapReduce技术,并能在未来的工作中灵活运用。

    java8集合源码分析-SparkTutorial:Spark教程

    Linux操作系统下进行实验。 Apache Spark简介(摘自) Apache Spark是一个开源集群运算框架,最初是由加州大学柏克莱分校AMPLab所开发。 相对于HadoopMapReduce会在运行完工作后将中介数据存放到磁盘中,Spark使用了...

    门铃设计_简单门铃设计代码_

    在电子工程领域,门铃设计通常包括信号传输、音频处理以及用户交互等部分。在这个项目中,我们看到一个与开发板相关的程序,这表明我们可以用编程语言来实现门铃的控制功能。 简单门铃设计的代码可能是用微控制器...

    大学生网络技术专业课件之云计算.pptx

    《纽约时报》利用亚马逊的云计算服务,配合开源软件Hadoop,实现了大量报纸档案的快速数字化,这是云计算高效率的一个典型例子。 云计算的关键技术包括虚拟化,使得物理资源能够被分割成多个虚拟资源供多个用户使用...

    37篇经过消化云计算论文打包下载

    Chukwa是建立在Hadoop上的数据收集系统,用以监控和分析大规模的分布式系统。本文介绍了他的设计和初步实施。 3、 Cloud Computing and Grid Computing 360-Degree Compared Ian Foster比较对比了云计算和网格...

Global site tag (gtag.js) - Google Analytics