如何在 python 中从 S3 中的 pandas 数据帧写入镶木地板文件

新手上路,请多包涵

我有一个熊猫数据框。我想将此数据框写入 S3 中的镶木地板文件。我需要一个相同的示例代码。我试图用谷歌搜索它。但我无法获得有效的示例代码。

原文由 Alexsander 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 753
2 个回答

首先确保你已经安装了 pyarrow 或 fastparquet 和 pandas。

然后安装 boto3 和 aws cli。使用 aws cli 设置位于 .aws 文件夹中的配置和凭证文件。

这是一个使用 pyarrowboto3 创建临时镶木地板文件然后发送到 AWS S3 的简单脚本。

不包括进口的示例代码:

 def main():
    data = {0: {"data1": "value1"}}
    df = pd.DataFrame.from_dict(data, orient='index')
    write_pandas_parquet_to_s3(
        df, "bucket", "folder/test/file.parquet", ".tmp/file.parquet")

def write_pandas_parquet_to_s3(df, bucketName, keyName, fileName):
    # dummy dataframe
    table = pa.Table.from_pandas(df)
    pq.write_table(table, fileName)

    # upload to s3
    s3 = boto3.client("s3")
    BucketName = bucketName
    with open(fileName) as f:
       object_data = f.read()
       s3.put_object(Body=object_data, Bucket=BucketName, Key=keyName)

原文由 andreas 发布,翻译遵循 CC BY-SA 4.0 许可协议

供您参考,我有以下代码作品。

 s3_url = 's3://bucket/folder/bucket.parquet.gzip'
df.to_parquet(s3_url, compression='gzip')

为了使用 to_parquet ,您需要安装 pyarrowfastparquet 。此外,请确保您的 configcredentials 文件中的信息正确,位于 .aws 文件夹。

编辑:此外,需要 s3fs 。请参阅 https://stackoverflow.com/a/54006942/1862909

原文由 Wai Kiat 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进