使用Parquet元数据查找特定键



我有一堆包含数据的Parquet文件,其中每一行都有表单[, data1, data2, data3,…]。我需要知道在哪个文件中某个,而无需实际打开每个文件并进行搜索。有可能从Parquet元数据中得到这个吗?

<键/strong>S被格式化为字符串。

我已经尝试使用PyArrow访问元数据,但没有得到我想要的数据。

简短的回答是不

更长的回答:Parquet有两种类型的元数据,有助于消除数据,最小/最大统计和可选的BloomFilters。使用这两种方法,您可以确定文件是否不包含您的键,但无法确定100%是否包含(除非您的键恰好是最小/最大值)。Pyarrow目前只公开行组统计数据,根本不支持BloomFilter的读写。

同样,如果键的基数足够低,则可以使用字典编码对列进行编码。如果列中的所有数据都是字典编码的,则可以通过一些较低级别的api(可能不是pyarrow)检索字典并扫描它们,而不是整个文件。

如果你控制了写入过程,那么根据键/限制每个文件的键数对数据进行排序将有助于使这些方法更有效。

最新更新