我从Apache Spark创建了一个Parquet输出,因此创建了一个包含多个文件的目录,每个分区一个。现在,我想从Java阅读。 (新的API,今天不推荐使用许多方法)
可以读取单个文件:
HadoopInputFile file = HadoopInputFile.fromPath(new Path(nodeId), conf);
ParquetReadOptions options = ParquetReadOptions.builder().build();
try (ParquetFileReader reader = ParquetFileReader.open(file, options);) {
MessageType schema = reader.getFileMetaData().getSchema();
}
如果文件是目录,则ParquetFileReader抱怨“是目录”。精细。因此,我需要一种支持目录的方法或允许添加多个文件的方法。此方法应读取所有文件并合并架构。
我最近的实验是
ParquetReadOptions options = ParquetReadOptions.builder().build();
ReadSupport readSupport = new GroupReadSupport();
ParquetReader r = ParquetReader.builder(readSupport, new Path(nodeId)).build();
SimpleGroup o = (SimpleGroup) r.read();
SimpleGroup有一个架构,虽然没有公开,但是我确信我可以遵循这条路线。
但是有没有更简单的方法?
也可以公开getFileMetaData()。getSchema()方法的方法吗?那不需要只读取第一条记录就可以拥有一个模式吗?这样会创建合并的架构吗?
将感谢任何提示和示例...