【发布时间】:2020-08-24 22:38:02
【问题描述】:
在读取 Dask DataFrame 时,如何根据 Parquet 最小值/最大值应用谓词下推过滤器?
假设您有一个包含 4 个 Parquet 文件的数据湖,每个文件都有 nickname 和 age 列。此表显示每个文件的 Parquet 文件名、年龄最小值和年龄最大值。
| File | min | max |
|---------------|-----|-----|
| pets1.parquet | 1 | 9 |
| pets2.parquet | 3 | 9 |
| pets3.parquet | 2 | 4 |
| pets4.parquet | 7 | 12 |
假设您想对年龄大于 10 的所有数据行执行分析。您知道在执行此分析时可以跳过 pets1.parquet、pets2.parquet 和 pets3.parquet,因为这些文件中的最大年龄小于我们过滤器查询中的最小值。跳过文件可以使某些分析运行得更快。
这是 API 文档中的 read_parquet 方法签名:dask.dataframe.read_parquet(path, columns=None, filters=None, categories=None, index=None, storage_options=None, engine='auto', gather_statistics=None, split_row_groups=None, chunksize=None, **kwargs)。
filter 参数有帮助吗?可以给个sn-p代码吗?
【问题讨论】: