Панды для паркет НЕ в файловую систему, но получить содержимое результирующего файла в переменной
Есть несколько способов, как можно превратить панды в паркет. например, pyarrow.Table.from_pandas или dataframe.to_parquet. Общее у них то, что они получают в качестве параметра filePath, где должен храниться файл df.parquet.
Мне нужно получить содержимое записанного файла паркета в переменную, и я еще не видел этого. Главным образом я хочу использовать то же поведение, что и pandas.to_csv, который возвращает результат в виде строки, если путь не указан.
Конечно, я мог бы просто записать файл и прочитать его с помощью стандартных операций чтения файлов из python в строку. Поскольку я пишу кучу данных, это приведет к большой нагрузке на файловую систему...
1 ответ
Вы можете использовать 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.