首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在s3 AWS中将pandas数据帧写入拼图

在s3 AWS中将pandas数据帧写入拼图
EN

Stack Overflow用户
提问于 2019-11-28 02:11:24
回答 3查看 6.8K关注 0票数 3

我想以拼图格式在我的s3存储桶中写入我的数据帧。我知道如何以csv格式编写数据帧。但是我不知道怎么用拼花的格式写。下面是csv格式的代码(我没有显示字段ServerSideEncryption和SSEKMSKeyId,但我在实际代码中使用了它们):

代码语言:javascript
运行
复制
csv_to_write = df.to_csv(None).encode()
s3_client.put_object(Bucket=bucket_name,Key='data.csv', Body=csv_to_write,
              ServerSideEncryption='XXXXX', SSEKMSKeyId='XXXXXXXX')

有没有同样的拼花地板?谢谢

EN

回答 3

Stack Overflow用户

发布于 2020-01-13 17:28:07

对于python 3.6+,AWS有一个名为

aws-data-wrangler

这有助于Pandas/S3/Parquet之间的集成

安装do;

代码语言:javascript
运行
复制
pip install awswrangler

如果你想把你的pandas数据帧作为一个拼图文件写到S3上就行了;

代码语言:javascript
运行
复制
import awswrangler as wr
wr.s3.to_parquet(
    dataframe=df,
    path="s3://my-bucket/key/my-file.parquet"
)

如果你想添加加密,做;

代码语言:javascript
运行
复制
import awswrangler as wr
extra_args = {
    "ServerSideEncryption": "aws:kms",
    "SSEKMSKeyId": "YOUR_KMS_KEY_ARN"
}
sess = wr.Session(s3_additional_kwargs=extra_args)
sess.s3.to_parquet(
    dataframe=df,
    path="s3://my-bucket/key/my-file.parquet"
)
票数 8
EN

Stack Overflow用户

发布于 2019-11-28 02:41:46

假设您的数据帧名为df,请使用以下代码首先将其转换为拼接格式并存储。然后将此拼图文件上传到s3。

代码语言:javascript
运行
复制
import pyarrow as pa
import pyarrow.parquet as pq
import boto3

parquet_table = pa.Table.from_pandas(df)
pq.write_table(parquet_table, local_file_name)

s3 = boto3.client('s3',aws_access_key_id='XXX',aws_secret_access_key='XXX')
s3.upload_file(local_file_name, bucket_name, remote_file_name)
票数 1
EN

Stack Overflow用户

发布于 2021-03-01 20:31:55

上面使用AWS Wrangler的解决方案非常好,但当我尝试使用上面的示例时,假设库已经更改,我确实得到了一个错误。下面的方法对我很有效:

代码语言:javascript
运行
复制
wr.s3.to_parquet(df, path=f"s3://{output_bucket}/{output_key}.parquet", index=False)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59076204

复制
相关文章

相似问题

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