1.中位数与标准差计算示例
中位数与标准差的计算相对于平均值、最大值、最小值的计算要相对更加复杂一些。因为这两个计算不满足交换律和结合律,所以不能向之前那样轻松的使用combiner。
1.中位数与标准差
中位数是将数据集从高到低进行排序,取中间的那个值。这要求数据集是完整的,并且是混排过的。
标准差显示了数据相对于平均值的变化情况,因此需要在简化之前计算出数据的平均值。
2.数据集
本示例使用Movielens数据集中的u1.base文件,MovieLens数据集是一个用户对电影的评分数据集,在后续的示例中我们将一直使用这个数据集,我会将这个数据集上传到CSDN方便大家下载,文件的格式如下所示:
第1列到第4列分别代表用户ID,项目ID,用户对项目的评分,时间戳
1 1 5 874965758
1 2 3 876893171
1 3 4 878542960
1 4 3 876893119
1 5 3 889751712
1 7 4 875071561
1 8 1 875072484
... .... ....
943 1067 2 875501756
943 1074 4 888640250
943 1188 3 888640250
943 1228 3 888640275
943

本文介绍了一种使用MapReduce计算中位数和标准差的方法,虽然能够得出结果,但在处理大规模数据时因需全部加载到内存而可能导致内存溢出。通过自定义Writab类、Mapper和Reducer代码进行实现,但不建议在大数据场景下使用,因为存在内存消耗问题。
最低0.47元/天 解锁文章
1048

被折叠的 条评论
为什么被折叠?



