我有一个要查询的存储在AWS S3中的实木复合地板文件。我想检索某行数据,因为它等于一个值。几乎就像我在SQL中一样:
SELECT * FROM file.parquet WHERE id = '1234';
我正在使用parquet-mr
将其直接从S3加载到内存中并进行读取,并用AvroParquetReader
对其进行设置以读取行。
我已经将每一行复制到一个Map中以便于查询,但是有更好的方法吗? parquet-mr
的文档不是很好,大多数教程都使用不推荐使用的方法。
这是我所拥有的一些示例代码:
final ParquetReader<GenericRecord> reader = AvroParquetReader
.<GenericRecord>builder(internalPath)
.withConf(parquetConfiguration).build();
您可以使用reader.read()
来获取文件的下一行(这是我用来将其放入HashMap
的内容,但是我在{{ 1}},可让您查询文件而无需将整个文件加载到内存中。