我创建了一个按如下方式分区的拼图数据集:
2019-taxi-trips/
- month=1/
- data.parquet
- month=2/
- data.parquet
...
- month=12/
- data.parquet此组织遵循Hive Metastore使用的Parquet dataset partitioning convention。此分区方案是手动生成的,因此目录树中的任何位置都没有_metadata文件。
现在我想将此数据集读取到Dask中。
当数据位于本地磁盘上时,以下代码可以正常工作:
import dask.dataframe as dd
dd.read_parquet(
"/Users/alekseybilogur/Desktop/2019-taxi-trips/*/data.parquet",
engine="fastparquet"
)我将这些文件复制到S3存储桶(通过s3 sync;分区文件夹是存储桶like so中的顶级关键字),并尝试使用相同的基本函数从云存储中读取它们:
import dask.dataframe as dd; dd.read_parquet(
"s3://2019-nyc-taxi-trips/*/data.parquet",
storage_options={
"key": "...",
"secret": "..."
},
engine="fastparquet")这会引发IndexError: list index out of range。Full stack trace here。
目前不能直接从亚马逊网络服务S3读取这样的数据集吗?
发布于 2020-10-12 01:27:05
目前,fastparquet中存在一个错误,导致此代码无法正常工作。详情请参见Dask GH#6713。
同时,在这个bug被解决之前,这个问题的一个简单的解决方案是使用pyarrow后端。
dd.read_parquet(
"s3://2019-nyc-taxi-trips/*/data.parquet",
storage_options={
"key": "...",
"secret": "..."
},
engine="pyarrow"
)https://stackoverflow.com/questions/64251021
复制相似问题