У меня есть RDD, где каждый элемент представляет собой кортеж формы
[ (index1,SparseVector({idx1:1,idx2:1,idx3:1,...})) , (index2,SparseVector() ),... ]
Я хотел бы получить скалярное произведение каждого из значений в этом RDD, используя метод SparseVector1.dot(SparseVector2), предоставляемый классом mllib.linalg.SparseVector
. Я знаю, что в python есть модуль itertools.combinations
, который можно использовать для вычисления комбинаций точечных произведений. Может ли кто-нибудь предоставить фрагмент кода для достижения того же? Я могу только сделать RDD.collect()
, поэтому я получаю список всех элементов в RDD, а затем запускаю itertools.combinations в этом списке, но, насколько я понимаю, это будет выполнять все вычисления в корне и не будет распределяться по -се. Может ли кто-нибудь предложить более распределенный способ достижения этого?