只读取符合条件的 .parquet 文件的特定行?

Read only specific rows of .parquet files matching criteria?

我正在处理一个充满 .parquet 文件的文件系统。其中一列 'id' 唯一标识一台机器。我能够使用 pyspark 打开特定目录路径中的所有 .parquet 文件,然后从 'id' 列创建一组值([])。我想打开所有其他文件中的所有其他行,其中 'id' 与先前计算的集合中的值之一相匹配。

我可以通过 pyspark 做到这一点,但它非常复杂,需要我实例化一个本地 spark 服务器。我正在尝试通过 pyarrow 找到一种方法来执行此操作,但它似乎是 read_pandas / read 方法 'filters' 参数只能过滤分区数据,而不是任意列数据。

有没有办法实现我在这里寻找的东西?我无法打开整个数据集,然后使用 Python 过滤掉 'id' 不匹配的行,因为它不适合内存。

截至 0.15.0,pyarrow 没有此功能,但我们(在 Apache Arrow 项目中)正在积极致力于此,并希望将其包含在下一个主要版本中。