#parquet #pyarrow
#parquet #pyarrow
Вопрос:
Я хочу получить статистику файла Parquet (например, Min / Max) из файла в S3 с помощью PyArrow. Я могу получить его с помощью
pq.ParquetDataset(s3_path, filesystem=s3)
и получает статистику, если я загружаю и читаю ее с помощью:
ParquetFile(full_path).metadata.row_group(0).column(col_idx).statistics
надеюсь, есть способ добиться этого без загрузки всего файла.
Спасибо
Ответ №1:
Я пришел к этому сообщению в поисках аналогичного ответа несколько дней назад. В конце концов я нашел простое решение, которое работает для меня.
import pyarrow.parquet as pq
from pyarrow import fs
s3_files = fs.S3FileSystem(access_key) # whatever need to connect to s3
# fetch the dataset
dataset = pq.ParquetDataset(s3_path, filesystem=s3_files)
metadata = {}
for fragment in dataset.fragments:
meta = fragment.metadata
metadata[fragment.path] = meta
print(meta)
Метаданные хранятся в словаре, где ключи — это путь к фрагменту в s3, а значения — это метаданные этого конкретного фрагмента.
для доступа к статистике просто используйте
meta.row_group(0).column(col_idx).statistics
что-то вроде этого будет напечатано для каждого фрагмента
<pyarrow._parquet.FileMetaData object at 0x7fb5a045b5e0>
created_by: parquet-cpp-arrow version 8.0.0
num_columns: 6
num_rows: 10
num_row_groups: 1
format_version: 1.0
serialized_size: 3673