如今是大数据的时代,数据呈指数型增长,那么如何利用这些数据?离不开大数据计算,今天小普给大家介绍的是:Spark的分布式计算框架,它能很好地适配大数据场景下的计算任务。
【相似度计算】是金融领域或商品推荐等领域的常见需求,如果需要计算M个用户两两之间的相似度情况,若用户特征个数为N。
如果采用循环遍历的计算方式,我们需要计算M*(M-1)次才能得到两两用户之间的相似度情况。
而如果我们采用矩阵计算的方式,只需构造一个M*N维的矩阵A,
做一些简单的矩阵运算:
运算的结果矩阵元素的下标,就对应这用户与用户之间的欧式距离情况,如元素A32, 便是用户3和用户2的欧式距离。在数据量较大的情况,相较于循环遍历的方法,矩阵运算可以节省很多时间。
然而,大数据场景下,数据量经常会变得非常极端,如:
要计算1亿个用户两两之间的相似度,哪怕用户的特征维度仅为5,也需要构造一个100,000,000*5 的矩阵。而矩阵计算过程中的中间矩阵,如
A*AT
会得到100,000,000*100,000,000 的中间矩阵
如果直接进行内存运算的话,大概需要9094Tb 的内存,势必会导致内存溢出。
Spark 的分布式矩阵为上述大数据场景提供了一种可行的解决方案,在介绍分布式矩阵之前,需要先介绍Spark.mllib中的矩阵特质。