Pandas数据框到内存中的镶木地板缓冲区

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

用例如下:

  1. 从外部数据库读取数据并将其加载到pandas数据帧中
  2. 将该数据帧转换为镶木地板格式缓冲区
  3. 将该缓冲区上传到s3

我一直在尝试在内存中执行第二步(无需将文件存储到磁盘以获得镶木地板格式),但到目前为止我看到的所有库,它们总是写入磁盘。

所以我有以下问题:

  • 如果转换是在内存中完成的,那么它不会更高效,因为您不必处理I / O磁盘开销吗?
  • 当您增加转换文件并将其存储到磁盘的并发进程时,我们是否有关于磁盘的问题,例如某些点的空间不足或达到磁盘的吞吐量限制?
提问于
用户回答回答于

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)

热门问答

SCF 服务中运行 puppeteer 缺少中文字体?

推荐已采纳

您好,这个功能正在发布中,烦请持续关注~

移动流量池的问题?

DylanRichard

腾讯 · 产品经理 (已认证)

万物互联的时代,欢迎来到IoT的世界
推荐

1.根据移动运营商的规则,要求为同一流量档位月套餐的卡且每次不低于100张才能组成流量池,后续也可以购买大于等于100张相同月套餐的卡加入该流量池。

2.流量池内的卡需要激活后才能流量共用。

windows 系统服务器用 硬盘共享的方式,传输文件到 云服务器?

蒋小爱

腾讯云 · 技术支持 (已认证)

推荐
亲,希望能帮到您 解决办法1,云服务器是Windows吗 。 装个QQ ,将文件发送到云服务器中 解决办法2,使用XFTP 等各种第三方工具 解决办法3, 云服务器是Linux 吗, 用 rz 命令即可 图片.png 图片.png 图片.png ... 展开详请

iOS公司两个独立app能用同一个账号吗,一个会踢掉另一个在线吗?

Richel码农
推荐
您好,首先跟您确认下,两个独立app同一个账号 1、2个不同应用(sdkappid不同)是不存在有同一个帐号的。 2、一个应用中,同一个帐号在两个相同终端(例如两个 iOS 端登录)仍然会互踢。详见:https://cloud.tencent.com/document/produ...... 展开详请

签名中的 appid/bucket 与操作目标不匹配是什么意思?

臧瑟不务正业的程序猿。
推荐
请用新版吧,https://cloud.tencent.com/document/product/866/33524 在线调用可以参考:https://console.cloud.tencent.com/api/explorer?Product=ocr&Version=2018-...... 展开详请

数据万象持久化在JavaScript SDK中的问题?

可以的,有Domain参数。请参考:https://github.com/tencentyun/cos-js-sdk-v5/blob/master/csp/csp.html#L56

所属标签

扫码关注云+社区

领取腾讯云代金券