#apache-spark #pyspark #apache-spark-sql
Вопрос:
У меня есть два DF, один с полной загрузкой, а другой с добавлением, я хочу добавить данные для идентификатора пользователя, которые одинаковы в обоих кадрах данных. Так что мой окончательный вывод заключается в том, что идентификатор пользователя тот же, но значение обновляется. Я хочу сделать это в фрейме данных, у меня есть другой подход , который является устаревшим, но для этого необходимо создать несколько промежуточных таблиц, которых я хочу избежать, как я могу добавить данные в основную таблицу
Полный Стол
Идентификатор пользователя | сумма |
---|---|
ABC1234 | 20 |
ABC1235 | 10 |
ABC2222 | 20 |
ABC1345 | 10 |
ABC4444 | 5 |
ABC5555 | 9 |
инкрементная загрузка
Идентификатор пользователя | сумма |
---|---|
ABC1234 | 5 |
ABC1235 | 5 |
ABC2222 | 7 |
ABC1345 | 20 |
ABC9999 | 15 |
Желаемый вывод
Идентификатор пользователя | сумма |
---|---|
ABC1234 | 25 |
ABC1235 | 15 |
ABC2222 | 27 |
ABC1345 | 30 |
ABC4444 | 5 |
ABC5555 | 9 |
ABC9999 | 15 |
Ответ №1:
Вы можете объединить оба кадра данных, а затем суммировать все записи для одного и того же клиента:
from pyspark.sql import functions as F
dfFull= ...
dfInc=...
dfResult=dfFull.union(dfInc).groupBy('customer_ID').agg(F.sum('amount').alias('amount'))
Комментарии:
1. Я не могу получить правильные результаты данных в большем наборе данных . как я могу это исправить?
2. @bigDataArtist какую ошибку вы видите?
3. Я смог ее решить. Спасибо