Как мне пройти через Spark RDD, чтобы оценить каждый элемент во вложенном кортеже и добавить этот результат в исходный RDD? - PullRequest
0 голосов
/ 27 декабря 2018

Извинения, если это вопрос новичка, я новичок в PySpark и Python.

У меня есть этот RDD, который является кортежем, он содержит идентификаторы фильмов в качестве первого элемента (1,2,3,4 ... и т. Д.) И строку двоичных целых чисел в качестве второго элемента.Таким образом, идентификатор фильма - это ключ, а двоичные числа - это значение.

Идентификатор фильма, жанр

1, (1,0,0,1,0,1,1,0,0,0,0,0,0,1)

2, (0,0,1,1,0,1,0,0,0,0,0,0,1,1)

и так далее.

Каждое из двоичных целых чисел указывает, принадлежит ли этот идентификатор фильма определенному жанру или нет.Я хочу создать систему рекомендаций в PySpark, которая будет принимать идентификатор фильма, скажем, 50, и сравнивать его двоичные целые числа (которые указывают, к каким жанрам он принадлежит) с двоичными целыми числами каждого другого идентификатора фильма в СДР.Если два двоичных целых числа в одной и той же позиции = 1, счетчик некоторого вида будет увеличен.Чем больше раз идентификатор фильма имеет 1 в той же позиции, что и 1 идентификатора 50 фильма, тем больше счетчик увеличивается.Счетчик будет храниться в переменной, которая измеряет, насколько сильно каждый идентификатор фильма соответствует жанру идентификатора фильма 50. Поскольку чем больше у каждого идентификатора фильма 1 в том же положении, что и у другого идентификатора фильма, тем более тесно связаны их жанры.и чем сильнее рекомендация.

Затем я хотел бы сформировать новый RDD, который содержит только идентификатор фильма и значение счетчика в качестве моей пары значений ключа, и полностью отбросить двоичные целые числа.

Чтобы мой конечный результат выглядел так:

MovieID, Жанр

1, 5

2, 3

Будетценю помощь!Заранее спасибо!

1 Ответ

0 голосов
/ 27 декабря 2018

Это превосходный случай для умножения матриц.enter image description here

A^T * B will give you the exact counter itself that you want!!
    where A is the matrix of your binary integers in Movie ID 50
          B is the matrix of binary integers in other movie IDs

Если у вас '1' в той же позиции, умножение вашей матрицы даст 1, иначе будет 0 для этой позиции.

так, например: 1 + 1 + 0 + ..... + 1 = ответ, который вы точно хотите.Вы должны агрегироватьByKey после выполнения операций.

Попробуйте эту логику.Вы достигнете.Тем не менее, предоставьте свой набор данных.Я мог бы дать вам код.Ура !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...