Панды для паркет НЕ в файловую систему, но получить содержимое результирующего файла в переменной - PullRequest
0 голосов
/ 13 февраля 2019

Существует несколько способов, с помощью которых возможен переход от панд к паркету.например, pyarrow.Table.from_pandas или dataframe.to_parquet.Общее у них то, что они получают в качестве параметра filePath, где должен храниться файл df.parquet.

Мне нужно получить содержимое записанного файла паркета в переменную, но я этого еще не видел.В основном мне нужно такое же поведение, что и у pandas.to_csv, который возвращает результат в виде строки, если путь не указан.

Конечно, я мог бы просто записать файл и прочитать его с помощью стандартных операций чтения файлов из python в строку,Поскольку я пишу кучу данных, это приведет к большой нагрузке на файловую систему ...

1 Ответ

0 голосов
/ 13 февраля 2019

Для этого вы можете использовать io.BytesIO или, в качестве альтернативы, Apache Arrow также предоставляет свою собственную реализацию BufferOutputStream.Преимущество этого состоит в том, что это пишет в поток без издержек прохождения Python.Таким образом, создается меньше копий и высвобождается GIL.

import pyarrow as pa
import pyarrow.parquet as pq

df = some pandas.DataFrame
table = pa.Table.from_pandas(df)
buf = pa.BufferOutputStream()
pq.write_table(table, buf)
# buf now contains the Parquet file in memory.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...