我有一个RDD(称为"数据"),其中每一行都是一个id / vector对,如下所示:
[('1',
array([ 0.16501912, -0.25183533, -0.07702908, 0.07335572, 0.15868553])),
('2',
array([ 0.01280832, -0.27269777, 0.09148506, 0.03950897, 0.15832097])),
我需要计算此RDD的成对相似性,将每行与每隔一行进行比较。我试过这个:
pairs = data.cartesian(data)\
.map(lambda l: ((l[0][0], l[1][0]), l[1][1].dot(l[1][1])))\
.sortByKey()
但这需要永远,因为RDD大约是500k行。我想知道是否有更好的方法?我正在使用pyspark。
非常感谢。