我有一个 parquet 数据集存储在 s3 上,我想查询数据集中的特定行。我能够使用 petastorm
来做到这一点,但现在我只想使用 pyarrow
来做到这一点。
这是我的尝试:
import pyarrow.parquet as pq
import s3fs
fs = s3fs.S3FileSystem()
dataset = pq.ParquetDataset(
'analytics.xxx',
filesystem=fs,
validate_schema=False,
filters=[('event_name', '=', 'SomeEvent')]
)
df = dataset.read_pandas().to_pandas()
但这会返回一个 pandas DataFrame,就好像过滤器不起作用一样,即我有各种值为 event_name
的行。有什么我想念的或我误解的东西吗?我可以在获取 pandas DataFrame 后进行过滤,但我会使用比需要更多的内存空间。
原文由 kluu 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于来自 Google 的任何人,您现在可以在读取 Parquet 文件时过滤 PyArrow 中的行。无论您是通过 pandas 还是 pyarrow.parquet 阅读它。
从 文档 中: