我使用 AvroParquetInputFormat。用例需要扫描多个输入目录,并且每个目录将包含具有一个模式的文件。由于 AvroParquetInputFormat 类无法处理多个输入模式,因此我通过静态创建多个虚拟类(如 MyAvroParquetInputFormat1、MyAvroParquetInputFormat2 等)创建了一个解决方法,其中每个类仅继承自 AvroParquetInputFormat。对于每个目录,我设置了不同的 MyAvroParquetInputFormat 并且有效(请告诉我是否有更简洁的方法来实现这一点)。
我目前的问题如下:
每个文件有几百列,基于元数据,我为每个目录构建了一个 projectionSchema,以减少不必要的磁盘和网络 IO。我在每个 MyAvroParquetInputFormat 类上使用静态 setRequestedProjection() 方法。但是,由于是静态的,最后一次调用的 projectionSchema 用于从所有目录读取数据,这不是必需的行为。
任何指向变通办法/解决方案的指针都将受到高度赞赏。
感谢和问候
MK