Как эффективно сложить несколько столбцов в PySpark? - PullRequest
0 голосов
/ 04 мая 2020

Недавно я начал использовать PySpark и его DataFrames. У меня ситуация, когда у меня около 18 миллионов записей и около 50 столбцов. Я хотел бы получить сумму каждого столбца, поэтому я использую:

df_final = df.select([f.sum(c) for c in df.columns])
df_final.collect()

Но моя проблема в том, что когда я делаю это, весь код перераспределяется только на 1 раздел, и у меня возникают проблемы с эффективностью и недостаточно памяти, когда я собираю.

Я читал, что он ведет себя так, потому что нужно поместить каждый ключ groupBy в одного исполнителя, так как я суммирую весь столбец, на самом деле мне не нужен groupBy, но я не знаю, как это сделать. достигните этого иначе.

Есть ли более эффективный / быстрый способ сделать это?

1 Ответ

0 голосов
/ 04 мая 2020

Желательно применять метод collect () для небольшого объема данных, так как он использует слишком много памяти. вы можете прочитать эту статью .

Вместо collect () запишите вывод в файл.

df.write.csv('mycsv.csv')

РЕДАКТИРОВАТЬ:

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