Как вы запрашиваете файл паркета, используя 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. Вы можете прочитать об этом и найти примеры здесь.