将数据帧作为镶木地板文件直接发送到保管箱

Posted

技术标签:

【中文标题】将数据帧作为镶木地板文件直接发送到保管箱【英文标题】:Sending dataframe as parquet file directly to dropbox 【发布时间】:2021-09-16 10:47:10 【问题描述】:

在我的脚本中,我生成了一个数据框,我想将它作为 parquet 文件直接上传到 Dropbox。我设法找到了这样的解决方案:

https://gist.github.com/MaxHalford/f17994c77bb775fdd04c9cd925e0b279

这可以帮助我保存数据框。但是,我真的很想直接发送拼花文件。

对我来说似乎很直观的选项:

fileToSave=tempDf.to_parquet('newFile.parquet')
upload_file(dbx, file_location, fileToSave)

但它会抛出

TypeError: expected str, bytes or os.PathLike object, not NoneType

你知道怎么做吗?

【问题讨论】:

【参考方案1】:

当您调用fileToSave=tempDf.to_parquet('newFile.parquet') 时,它会将表保存在名为newfile.parquet 的本地文件中并返回None

你想要做的是:

data = tempDf.to_parquet() #  bytes content of the parquet file
dbx.files_upload(
        f=data,
        path=path,
        mode=dropbox.files.WriteMode.overwrite
    )

这会将 df 转换为字节(在内存中),然后您可以将其上传到保管箱。

【讨论】:

以上是关于将数据帧作为镶木地板文件直接发送到保管箱的主要内容,如果未能解决你的问题,请参考以下文章

如何将单个镶木地板文件从 s3 读入 dask 数据帧?

获取分区镶木地板数据帧的最新模式

在读取镶木地板文件时刷新 Dataframe 的元数据

使用 pyspark 从 s3 位置读取镶木地板文件的文件夹到 pyspark 数据帧

将带有 timedeltas 的 pandas 数据帧写入镶木地板

使用 to_parquet() 将 dask 数据帧写入镶木地板结果“RuntimeError:文件元数据仅在写入器关闭后可用”