Как я могу преобразовать фрейм данных Pyspark в CSV, не отправляя его в файл? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть фрейм данных, который мне нужно преобразовать в файл CSV, а затем мне нужно отправить этот CSV в API. Поскольку я отправляю его в API, я не хочу сохранять его в локальной файловой системе, и мне нужно хранить его в памяти. Как я могу это сделать?

1 Ответ

2 голосов
/ 07 мая 2020

Простой способ: преобразовать фрейм данных в Pandas фрейм данных с помощью toPandas(), а затем сохранить в строку. Чтобы сохранить в строку, а не в файл, вам нужно будет вызвать to_csv с path_or_buf=None. Затем отправьте строку в вызове API.

From to_csv () документация:

Параметры

path_or_bufstr или дескриптор файла, по умолчанию None

Путь к файлу или объект, если None не указан, результат возвращается в виде строки.

Таким образом, ваш код, скорее всего, будет выглядеть так:

csv_string = df.toPandas().to_csv(path_or_bufstr=None)

Альтернативы: используйте tempfile.SpooledTemporaryFile с большим буфером для создания файла в памяти. Или вы даже можете использовать обычный файл , просто сделайте свой буфер достаточно большим и не глушите sh и не закрывайте файл. Взгляните на объяснение Кори Голдберга того, почему это работает.

...