pandas - 使用 pyarrow 在 aws s3 中读取分区数据集不会添加分区列
问题描述
我正在尝试在 aws s3 中读取分区数据集,它看起来像:
MyDirectory--code=1--file.parquet
--code=2--another.parquet
--code=3--another.parquet
我创建了一个文件列表,其中包含目录中所有文件的路径,然后执行
df = pq.ParquetDataset(file_list, filesystem=fs).read().to_pandas()
除了数据框df中不存在分区列代码外,一切正常。我也尝试了使用文件列表的 MyDirectory 的一个路径,但发现错误“在中间目录中找到文件:s3://bucket/Mydirectoty”,我在网上找不到任何答案。
谢谢!
解决方案
AWS 有一个项目 ( AWS Data Wrangler ) 帮助集成 Pandas/PyArrow 及其服务。
这个片段应该工作:
import awswrangler as wr
# Write
wr.s3.to_parquet(
df=df,
path="s3://...",
mode="overwrite",
dataset=True,
database="my_databse", # Optional, only if you want it available on Athena/Glue Catalog
table="my_table",
partition_cols=["PARTITION_COL_NAME"])
# READ
df = wr.s3.read_parquet(path="s3://...", dataset=True)
推荐阅读
- android - 需要帮助复制我们的 UI。将设置屏幕从 RecyclerView 移动到 PreferenceFragmentCompat (AndroidX)
- python - 如何在 cookie 中发送 oauth2 access_token ?(kong oauth2 插件)
- winforms - 如何以编程方式将值传递给 Devexpress 报告中的存储过程
- spring-security - 需要帮助使用 React-native、Spring Rest Api 和 ADFS 4.0 实施 OpenID 连接/OAuth2 流
- c++ - 在 Visual Studio 2019 中构建简单的点云可视化代码时,来自 PCL 的 3rd 方库的多个错误
- c++ - 有没有按不同按钮改变操作的功能
- node.js - 使用 tunnel-ssh 通过 nodeJS 中的 mongoose 通过 ssh 连接到远程服务器 mongoDB
- php - xampp 中的 Laravel vhosts 设置仅适用于第一页
- python - 在 python 中为 svm 模型预处理图像
- javascript - javascript aviod 拆分子字符串