колонка импорта слияния pyspark от одного df к другому на основе соответствующих данных - PullRequest
0 голосов
/ 05 ноября 2019

Я чрезвычайно новичок в работе с фреймами данных. У меня есть два кадра.

Один называется new, другой называется existing.

new имеет один столбец с именем ID. existing имеет три столбца: ID, цвет, размер.

Я хочу работать с этими кадрами так, чтобы, когда строка была найдена в new с тем же идентификатором, что и строка в existing, мыдобавьте значение цветного столбца (но не столбца размера) к фрейму данных new. Если совпадений не найдено, я бы хотел присвоить случайное значение цветному столбцу new

Мне приходит в голову, что я могу сделать это с помощью rdd.map, но я пытаюсь ограничиться работой скадры, потому что мне сказали, что это более эффективно.

1 Ответ

0 голосов
/ 05 ноября 2019

То, что вы ищете, это соединение, а точнее левое соединение:

from pyspark.sql import functions as f
new_df = new_df.join(existing_df, "id", "left_outer") \
               .select(new_df.id, f.coalesce(f.col("color"), f.rand())

Функция coalesce даст вам цвет, если он не равен нулю (то есть, если есть совпадение) илислучайное число. Вам, вероятно, нужно каким-то образом сопоставить случайное число с вашим цветовым спектром (в зависимости от того, какое у вас представление там).

Как общее примечание: использование фреймов данных и API-интерфейса spark-sql намного быстрее, чем выполнение операций RDD

...