Distância de cosseno da faísca entre linhas usando Dataframe

Preciso calcular uma distância de cosseno entre cada linha, mas não faço ideia de como fazê-lo usando os quadros de dados da API do Spark de maneira elegante. A idéia é calcular semelhanças para cada linha (itens) e obter as 10 principais semelhanças, comparando suas semelhanças entre as linhas. -> Isso é necessário para o sistema de recomendação de item e item.

Tudo o que eu li sobre isso se refere à computação de similaridade sobre colunasSemelhança de cosseno do Apache Spark Python sobre DataFrames Alguém pode dizer que é possível calcular uma distância de cosseno elegantemente entre linhas usando a API ou RDD do PySpark Dataframe ou eu tenho que fazer isso manualmente?

Isso é apenas um código para mostrar o que pretendo fazer

def cosineSimilarity(vec1, vec2):
    return vec1.dot(vec2) / (LA.norm(vec1) * LA.norm(vec2))


#p.s model is ALS
Pred_Factors = model.itemFactors.cache() #Pred_Factors = DataFrame[id: int, features: array<float>]

sims = []

for _id,_feature in Pred_Factors.toLocalIterator():
    for id, feature in Pred_Factors.toLocalIterator():

        itemFactor = _feature

        sims = sims.append(_id, cosineSimilarity(asarray(feature),itemFactor))

sims = sc.parallelize(l)
sortedSims = sims.takeOrdered(10, key=lambda x: -x[1])

Agradecemos antecipadamente por toda a ajuda

questionAnswers(1)

yourAnswerToTheQuestion