使用 PyArrow + Parquet + Google Cloud Storage 如何实现谓词下推?

How can I achieve predicate pushdown when using PyArrow + Parquet + Google Cloud Storage?

我真正想做的是这个(在 Python):

import pyarrow.parquet as pq

# Note the 'columns' predicate...
table = pq.read_table('gs://my_bucket/my_blob.parquet', columns=['a', 'b', 'c'])

首先,我认为从 V3.0.0 开始,PyArrow 不支持 gs://。 所以我必须修改代码才能使用fsspec接口:https://arrow.apache.org/docs/python/filesystems.html

import pyarrow.parquet as pq
import gcsfs

fs = gcsfs.GCSFileSystem(project='my-google-project')
with fs.open('my_bucket/my_blob.parquet', 'rb') as file:
    table = pq.read_table(file.read(), columns=['a', 'b', 'c'])

这是否实现了谓词下推(我对此表示怀疑,因为我已经使用 file.read() 准备了整个文件),或者是否有更好的方法实现?

这个有用吗?

import pyarrow.parquet as pq
import gcsfs

fs = gcsfs.GCSFileSystem(project='my-google-project')
table = pq.read_table('gs://my_bucket/my_blob.parquet', columns=['a', 'b', 'c'], filesystem=fs)