- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MapReduce例子
硕 士 研 究 生 实 践 报 告
题 目 IBM期末大作业
作者姓名 贾志远
作者学号
指导教师 大江老师
学科专业 软件工程
所在学院 软件学院
提交日期 二○一五年十一月
一 题目要求
我们的项目背景是,可穿戴设备的实时数据分析。1.txt记录的是某一个用户的心跳周期数据,每一个数值表示一次心跳的周期,单位是秒。例如,0.8表示用户当时的心跳间隙是0.8秒。心跳间期按照顺序存储。
利用Hadoop的MapReduce框架编写程序,计算出总测量时间和平均心跳间期,即求和与求平均。请写出程序,并在实验报告中简单描述你的思路。
探索Spark的Transformation中的mapPartition,写出示例程序,并思考何时会用到mapPartition,为什么要用它?
探索Spark的Transformation中的flatMap,写出示例程序,并思考何时会用到它,为什么要用到它。
(选做)SD1和SD2是表征心率变异性的一种指标。结合发给你们的论文,用Java或者Scala实现SD1和SD2的计算(不用考虑并行化,普通的Java或Scala程序即可)。
(选做)假设我们同时监控100个用户的心率,是否能够利用Spark的RDD的特性,并行地计算SD1和SD2?(提示:把每一个用户的心率数据作为RDD里面的一个元素,RDD中不同的元素表示不同用户的心率数据,利用map对每一个用户的心率数据进行并行分析)。请描述设计思路,并尽可能实现一个多用户心率监控的计算程序。
作业要求:提交源代码,并提交一份简单的实验报告,包括程序的思路和对前面提出问题的简要回答。请于11/20前交给班长,并由班长统一发给我。
有问题的话可以QQ或者微信找我:215918152,但是希望到我这里的问题都能够有一定技术含量:P 系统配置等初级问题请自行找牛逼的同学帮忙解决。
二 题目实现
第一题:
本题就是利用Hadoop的MapReduce框架编写程序,计算出总测量时间和平均心跳间期,即求和与求平均,程序代码如下:
public class Heart extends Configured implements Tool {
private final static Text COUNT = new Text(count);
public static class HeartMapper extends
MapperObject, Text, Text, FloatWritable {
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException {
String LENGTH = value.toString();
context.write(COUNT, new FloatWritable(Float.parseFloat(LENGTH)));
}
}
public static class HeartReducer extends
ReducerText, FloatWritable, Text, FloatWritable {
private FloatWritable sum = new FloatWritable();
public void reduce(Text key, IterableFloatWritable values,
Context context) throws IOException, InterruptedException {
float theSum = 0;
int count = 0;
for (FloatWritable val : values) {
theSum += val.get();
count++;
}
sum.set(theSum);
float mean = theSum / count;
context.write(new Text(sumHeartRate ), sum);
context.write(new Text(avgHeartRate ), new FloatWritable(
mean));
}
}
public static void main(String[] args) throws Exception {
T
文档评论(0)