Advertisement

MapReduce编程基础(2)——数值概要(计算中位数、标准差)[内存优化]

阅读量:

1.中位数与标准差计算示例【内存优化】

在前一篇文章中,我阐述了一种用于计算中位数和标准差的途径,然而该方式需要将全部数据加载至内存后再逐一处理,存在一定的优化空间。因此,在本篇内容中,我们对前述方案进行改进。
若将所有数值直接插入列表,将会导致大量重复项的出现。为了避免元素重复的问题,可以采用记录元素出现次数的方式加以解决。
例如:对于数据集<1,1,1,1,2,2,3,4,5,5,5>,可以使用已排序的数值与对应计数之间的映射关系进行替代:(1->4,2->2,3->1,4->1,5->3)。
其核心思想与之前的方法保持一致,但这种方式能够有效降低内存中存储的数据规模。此外,这种方法还具备一个显著优势,即可以在map阶段利用combiner对计数结果进行聚合处理。

2.数据集

本示例所采用的数据来源于Movielens数据集中的u1.base文件,该数据集主要记录了用户对各类电影的评分信息。在接下来的多个示例中,我们将持续使用这一数据集作为分析对象。为了便于大家获取,我会将该数据集上传至平台。接下来将对文件的具体格式进行说明:文件内容由四列组成,其中第1列至第4列依次表示用户的唯一标识符、电影项目的编号、用户针对该项目所给出的具体评分以及对应的操作时间戳。

复制代码
    1   1   5   874965758
    1  

全部评论 (0)

还没有任何评论哟~