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

У меня есть файл паркета, хранящийся в 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 Ответ

0 голосов
/ 08 февраля 2019

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

...