Использование статистики паркетных файлов без чтения файлов
Насколько я понимаю, файлы паркета имеют минимальную / максимальную статистику для столбцов. мой вопрос, как прочитать эту статистику с использованием 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]}}