Как вы запрашиваете файл паркета, используя parquet-mr?

У меня есть файл паркета в AWS S3, который я хочу запросить. Я хочу получить определенную строку данных, учитывая, что она равна значению. Почти как в SQL:

SELECT * FROM file.parquet WHERE id = '1234';

я использую parquet-mr загрузить его в память прямо из S3, прочитать и настроить с помощью AvroParquetReader читать строки.

Я скопировал каждую строку в карту для упрощения запросов, но есть ли лучший способ сделать это? Документация для parquet-mr не очень, и в большинстве уроков используются устаревшие методы.

Вот пример кода того, что я получил:

final ParquetReader<GenericRecord> reader = AvroParquetReader
                .<GenericRecord>builder(internalPath)
                .withConf(parquetConfiguration).build();

Ты можешь использовать reader.read() чтобы получить следующую строку в файле (это то, что я использовал, чтобы положить его в HashMap, но я не могу найти какие-либо методы в parquet-mr которые позволяют запрашивать файл без загрузки всего файла в память.

1 ответ

Функция, которую вы ищете, называется предикатом pushdown. Вы можете прочитать об этом и найти примеры здесь.

Другие вопросы по тегам