Читать файл Partial Parquet - PullRequest
1 голос
/ 01 мая 2019

У меня есть файл Parquet, и я не хочу читать весь файл в память. Я хочу прочитать метаданные, а затем прочитать остальную часть файла по требованию. То есть, например, я хочу прочитать вторую страницу первого столбца в группе третьего ряда. Как бы я это сделал, используя библиотеку Apache Parquet cpp? У меня есть смещение той части, которую я хочу прочитать из метаданных, и могу читать ее прямо с диска. Есть ли способ передать этот буфер в библиотеку Apache Parquet для распаковки, декодирования и перебора значений? Как насчет того же для групп столбцов или групп строк? По сути, я хочу частично прочитать файл, а затем передать его API-интерфейсам для обработки, а не передавать обработчик файла в API и пропустить его через файл. Возможно ли это?

1 Ответ

1 голос
/ 01 мая 2019

За кулисами именно это и делает библиотека Apache Parquet C ++. Когда вы передаете дескриптор файла, он будет читать только те части, которые ему нужны. Поскольку требуется, чтобы нижний колонтитул файла (основные метаданные) знал, где найти сегменты данных, это всегда будет читаться. Сегменты данных будут прочитаны только после того, как вы их запросите.

Нет необходимости писать специальный код для этого, библиотека уже имеет его встроенный. Таким образом, если вы хотите подробно узнать, как это работает, вам нужно только прочитать исходный код библиотеки: https://github.com/apache/arrow/tree/master/cpp/src/parquet

...