【问题标题】:Dask DataFrame to_parquet return bytes instead of writing to fileDask DataFrame to_parquet 返回字节而不是写入文件
【发布时间】:2019-03-11 00:56:01
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: pandas dataframe parquet dask fastparquet


    【解决方案1】:

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

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

    要直接使用 dask,您可以使用 filesystem_spec 项目中的 the MemoryFileSystem。您需要将该类添加到 Dask 并编写如下:

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

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

    【讨论】:

    • (注意,我不知道pyarrow是否可以直接写入BytesIO)
    • 感谢您的详细解答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2018-11-30
    • 2020-02-01
    • 2018-10-20
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多