Dask DataFrame to_parquet return 字节而不是写入文件

Dask DataFrame to_parquet return bytes instead of writing to file

是否可以将 dask/pandas DataFrame 写入 parquet 而不是 return 字节字符串?我知道接受文件路径的 to_parquet() 函数是不可能的。也许,你有一些其他的方法来做到这一点。如果不可能做这样的事情,添加这样的功能是否有意义?理想情况下,它应该是这样的:

parquet_bytes = df.to_parquet() # bytes string is returned

谢谢!

已经进行了允许这样的事情的工作,但它目前不像你建议的那样是单行的。

首先,如果您有适合内存的数据,您可以使用 fastparquet 的 write() 方法,并提供一个 open= 参数。这必须是一个以二进制写入模式创建类文件对象的函数,在您的情况下 BytesIO() 就可以了。

要直接使用 dask 进行这项工作,您可以使用 filesystem_spec 项目中的 the MemoryFileSystem。您需要将 class 添加到 Dask 并编写如下:

dask.bytes.core._filesystems['memory']  = fsspec.implementations.memory.MemoryFileSystem
df.to_parquet('memory://name.parquet')

完成后,作为 class 属性的 MemoryFileSystem.store 将包含类似于文件名的键和包含数据的 BytesIO 对象的值。