Я пытаюсь прочитать локальный файл Parquet, однако единственные API, которые я могу найти, тесно связаны с Had oop и требуют ввода oop Path
(даже для указания на локальный файл). ).
ParquetReader<GenericRecord> reader = AvroParquetReader.<GenericRecord>builder(file).build();
GenericRecord nextRecord = reader.read();
- самый популярный ответ в о том, как читать файл паркета, в отдельном коде java? , но для него требуется oop Path
и теперь устарел вместо загадочного InputFile
. Единственная реализация InputFile
, которую я могу найти, - это HadoopInputFile
, так что опять не поможет.
В Avro это просто:
DatumReader<GenericRecord> datumReader = new GenericDatumReader<>();
this.dataFileReader = new DataFileReader<>(file, datumReader);
(где file java.io.File
) , Что такое паркетный эквивалент?
Я прошу об отсутствии зависимости Had oop Path
в ответах, потому что Had oop таскает в аду раздувания и кувшина, и кажется глупым требовать его для чтения локальных файлы.
Для дальнейшего объяснения предыстории я использую небольшой плагин IntelliJ , который позволяет пользователям перетаскивать файлы Avro на панель для просмотра в таблице. Этот плагин в настоящее время 5 МБ. Если я включу зависимости Parquet и Had oop, он увеличивается до 50 МБ, а даже не работает .
ADDENDUM ADDENDUM
Теперь, когда у меня все работает (благодаря принятому ответу), вот мое рабочее решение, которое позволяет избежать всех надоедливых ошибок, которые можно перетаскивать, в значительной степени завися от API Had oop Path
: