使用 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)
我真正想做的是这个(在 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)