Java:读取分区实木复合地板文件的目录

时间:2019-07-07 08:51:04

标签: java hadoop parquet

我从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()方法的方法吗?那不需要只读取第一条记录就可以拥有一个模式吗?这样会创建合并的架构吗?

将感谢任何提示和示例...

0 个答案:

没有答案