使用Apache Beam Java SDK读取Parquet文件而不提供模式

2020年5月16日 54点热度 0条评论

似乎org.apache.beam.sdk.io.parquet.ParquetIO.readFiles方法需要传递一个架构。

有没有一种方法可以避免传递模式?
Parquet文件中不包含该模式吗?
如果我试图读取具有不同架构的多个Parquet文件怎么办?

解决方案如下:

请在网上找到我的回复

有没有一种方法可以避免传递模式?
当前没有机制来避免传递实木复合地板文件的架构
Parquet文件中不包含该模式吗?
是的,这是正确的,标头中的元数据是文件的架构定义。请参考BEAM-8344,这是一个开放功能请求,以支持推理模式
如果我试图读取具有不同架构的多个Parquet文件怎么办?
您可以执行以下操作,其中可以传递文件模式和路径并指定不同的模式。

  PCollection<FileIO.ReadableFile> files = pipeline
    .apply(FileIO.match().filepattern(options.getInputFilepattern())
    .apply(FileIO.readMatches());

  PCollection<GenericRecord> output = files.apply(ParquetIO.readFiles(SCHEMA));