, но блочная матрица все еще имеет 1003043309L столбцов и строк. Но для небольшого примера, приведенного в вопросе, у меня нет этой проблемы

я есть набор данных, содержащий работников с их демографической информацией, такой как возраст, пол, адрес и т. Д., А также место их работы. Я создал RDD из набора данных и преобразовал его в DataFrame.

Есть несколько записей для каждого идентификатора. Поэтому я создал DataFrame, который содержал только идентификатор работника и различные офисные помещения, в которых он работал.

    |----------|----------------|
    | **ID**    **Office_Loc**  |
    |----------|----------------|
    |   1      |Delhi, Mumbai,  |
    |          | Gandhinagar    |
    |---------------------------|
    |   2      | Delhi, Mandi   | 
    |---------------------------|
    |   3      |Hyderbad, Jaipur|
    -----------------------------

Я хочу рассчитать косинусное сходство между каждым работником и каждым другим работником на основе местоположения их офиса ».

Итак, я перебрал строки DataFrame, извлекая одну строку из DataFrame:

myIndex = 1
values = (ID_place_df.rdd.zipWithIndex()
            .filter(lambda ((l, v), i): i == myIndex)
            .map(lambda ((l,v), i): (l, v))
            .collect())

а затем с помощью карты

    cos_weight = ID_place_df.select("ID","office_location").rdd\
  .map(lambda x: get_cosine(values,x[0],x[1]))

чтобы вычислить косинусное сходство между извлеченной строкой и целым кадром данных.

Я не думаю, что мой подход хорош, так как я перебираю строки в DataFrame, так как он отрицает всю цель использования spark. Есть ли лучший способ сделать это в pyspark? Добрый совет.

Ответы на вопрос(1)

Ваш ответ на вопрос