У меня есть 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])),
Мне нужно рассчитать попарное сходство для этого СДР, сравнивая каждую строку с каждой другой строкой. Я попробовал это:
pairs = data.cartesian(data)\
.map(lambda l: ((l[0][0], l[1][0]), l[1][1].dot(l[1][1])))\
.sortByKey()
Но это занимает вечность, поскольку СДР составляет около 500 тыс. Строк. Интересно, есть ли лучший способ? Я использую pyspark.
Большое спасибо.