python - 将 pandas 数据帧转换为 parquet 格式并上传到 s3 存储桶
问题描述
我有一个镶木地板文件列表,我需要将这些文件从一个 S3 存储桶复制到另一个帐户中的另一个 s3 存储桶。在上传之前,我必须在镶木地板文件中添加几列。我正在尝试将文件读取到 pandas 数据框,并且正在添加列并将其转换为镶木地板,但它似乎不起作用。
这就是我正在尝试的。my_parquet_list 是我获取所有键列表的地方。
for file in my_parquet_list:
bucket = 'source_bucket_name'
buffer = io.BytesIO()
s3 = session.resource('s3')
s3_obj = s3.Object(bucket,file)
s3_obj.download_fileobj(buffer)
df = pd.read_parquet(buffer)
df["col_new"] = 'xyz'
df["date"] = datetime.datetime.utcnow()
df.to_parquet(buffer, engine= 'pyarrow', index = False)
bucketdest = 'dest_bucket_name'
s3_file = 's3_folder_path/'+'.parquet'
print(s3_file)
s3.Object(bucketdest, s3_file).put(Body=buffer.getvalue())
print('loaded')
解决方案
只是pip install s3fs
,然后配置你的aws CLI,最后你可以使用df.to_parquet('s3://bucket_name/output-dir/df.parquet.gzip',index=False)
推荐阅读
- python - 合并两个数据框列?
- angular - 如何修复“无法获取未定义或空引用的属性'get'”
- javascript - Bokeh div 小部件,通过按下按钮更改文本
- c++ - VS 中安装了本机 Nuget 包,但没有为 C++(本机)项目添加参考
- r - 在 rstudio 终端找不到 conda,而它在外面可以工作?
- java - 在从系统中删除之前,如何检测 Android 中任何文件的删除?
- html - 是否可以将方形图像放在椭圆形图像上?
- sockets - 当 read() 速率低于到达 TCP 数据包速率时
- javascript - 页面刷新时 JWT Token 已从标题中删除,如何修复?
- html - 将外部链接添加到 svg