Парное вычисление подобия в PySpark RDD занимает вечность - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть 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.

Большое спасибо.

...