是否可以使用 Dask 和 Fastparquet 读取器来读取手动分区的 Parquet 数据集?

我创建了一个 Parquet 数据集,分区如下:

2019-taxi-trips/
    - month=1/
        - data.parquet
    - month=2/
        - data.parquet
    ...
    - month=12/
        - data.parquet

该组织遵循Hive Metastore 使用的Parquet 数据集分区约定。_metadata该分区方案是手动生成的,因此目录树中的任何位置都没有文件。


我现在想将该数据集读入 Dask。


对于本地磁盘上的数据,以下代码有效:


import dask.dataframe as dd

dd.read_parquet(

    "/Users/alekseybilogur/Desktop/2019-taxi-trips/*/data.parquet",

    engine="fastparquet"

)

我将这些文件复制到 S3 存储桶(通过s3 sync; 分区文件夹是存储桶中的顶级键,如下所示),并尝试使用相同的基本功能从云存储中读取它们:


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完整的堆栈跟踪在这里


目前是否可以直接从 AWS S3 读取这样的数据集?


互换的青春
浏览 106回答 1
1回答

Cats萌萌

目前存在一个错误fastparquet,导致此代码无法工作。与此同时,在这个错误得到解决之前,解决这个问题的一个简单方法是使用后端pyarrow。dd.read_parquet(    "s3://2019-nyc-taxi-trips/*/data.parquet",    storage_options={        "key": "...",        "secret": "..."    },    engine="pyarrow")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python