首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pandas数据帧到内存中的parquet缓冲区

Pandas数据帧到内存中的parquet缓冲区
EN

Stack Overflow用户
提问于 2018-10-23 17:27:27
回答 1查看 5.5K关注 0票数 7

使用案例如下:

  1. 从外部数据库读取数据并将其加载到pandas中,然后将数据帧加载到parquet格式缓冲区中
  2. 将该缓冲区上传到s3

我一直在尝试在内存中执行第二步(不需要将文件存储到磁盘以获得parquet格式),但到目前为止,我看到的所有库都是写入磁盘的。

因此,我有以下问题:

  • 如果在内存中完成转换,性能不是更好吗?因为您不必处理I/O磁盘开销。
  • 当您增加转换文件并将其存储到磁盘的并发进程时,我们是否会遇到有关磁盘的问题,例如在某些情况下空间不足或达到磁盘吞吐量限制?
EN

回答 1

Stack Overflow用户

发布于 2019-06-05 02:35:34

Apache Arrowpyarrow库应该可以解决这个问题,并在内存中完成大部分处理。在pandas中,您可以通过pyarrow读/写镶木面板文件。

一些示例代码也利用了smart_open

import pandas as pd
import boto3
from smart_open import open
from io import BytesIO

s3 = boto3.client('s3')

# read parquet file into memory
obj = s3.get_object(Bucket=bucket, Key=key)
df = pd.read_parquet(BytesIO(obj['Body'].read()), engine='pyarrow')

# do stuff with dataframe

# write parquet file to s3 out of memory
with open(f's3://{outputBucket}/{outputPrefix}{additionalSuffix}', 'wb') as out_file:
    df.to_parquet(out_file, engine='pyarrow', index=False)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52945609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档