Использование статистики паркетных файлов без чтения файлов

Насколько я понимаю, файлы паркета имеют минимальную / максимальную статистику для столбцов. мой вопрос, как прочитать эту статистику с использованием Python, не читая весь файл?

Если это поможет, у меня также есть _common_metadata а также _metadata файлы.


Моя конкретная проблема заключается в получении максимальной даты для каждого раздела фондовой биржи в этой файловой системе (каждый годовой раздел содержит несколько паркетных файлов, имеющих столбец даты):

C:.
│   _common_metadata
│   _metadata
├───source=NASDAQ
│   ├───year=2017
│   └───year=2018
├───source=London_Stock_Exchange
│   ├───year=2014
│   ├───year=2015
├───source=Japan_Exchange_Group
│   ├───year=2017
│   └───year=2018
└───source=Euronext
    ├───year=2017
    └───year=2018

2 ответа

Решение

Вы можете извлечь их для каждой группы RowGroup в pyarrow:

import pyarrow.parquet as pq

pq_file = pq.ParquetFile(…)
# Get metadata for the i-th RowGroup
rg_meta = pq_file.metadata.row_group(i)
# Get the "max" statistic for the k-th column
max_of_col = rq_meta.column(col).statistics.max

После некоторого дополнительного поиска я нашел это sorted_partitioned_columns в fastparquet модуль.

это дает минусы и максимумы каждого файла!

пример:

>>> import fastparquet
>>> fastparquet.api.sorted_partitioned_columns(pf)
{'id': {'min': [1, 5, 10], 'max': [4, 9, 20]}}
Другие вопросы по тегам