求教spark如何使用窗口遍历整个RDD?
在把一个东西从Hadoop上移植到Spark上的时候遇到了一些问题,Hadoop这个东西叫Dedoop,适用于数据去重或者链接。其原理是排序后的数据集使用一个大小为k的窗口遍历整个数据集,遍历的同时计算窗口内部的数据的互相之间的相似度。Hadoop上实现这个非常方便,只需要分组之后每个reduce做一次遍历,然后再把每个reduce的头尾拿出来再做一次reduce就好,但是在spark上遇到了这个窗口遍历的难题。
因为spark是把RDD当做整体来操作,所以我觉得这种窗口算法应该是很容易实现的才对,但是刚刚接触spark,查了很多资料,没有发现适用的办法。时间又很紧迫,所以只能来求教大家了!
目前想的是把数据当做key,排序后foreach直接使用一个窗口遍历,这样在每台机器上至少可以保证机器上面的数据已经经过计算,但是每台机器上的数据集的头尾就很难办了,第i台机器的数据尾需要与第i+1台机器的数据头进行一次计算,在spark上没有发现较好的办法。
希望大家赐教!!!非常感谢!