我遇到了简单的 spark 任务的问题,它读取 Avro 文件,然后将其保存为 Hive parquet 表。
我有 2 种类型的文件,通常它们是相同的,但关键结构有点不同 - 字段名称。
类型 1
root
|-- pk: strucnt (nullable = true)
|-- term_id: string (nullale = true)
类型 2
root
|-- pk: strucnt (nullable = true)
|-- id: string (nullale = true)
我正在使用 spark-avro 阅读 Avro。然后像这样将这个DF映射到bean
Dataset<SomeClass> df = avroDF.as(Encoders.bean(SomeClass.class));
SomeClass 是一个带有 getter 和 setter 的简单单字段类。
public class SomeClass{
private String term_id;
...
}
因此,如果我正在阅读 Avro type 1 - 没关系。但是,如果我正在阅读 Avro 类型 2 - 就会发生错误。反之亦然,如果我将字段名称更改为private String id;
我的问题有什么通用的解决方案吗?我找到了@AvroName,但它不允许设置多个名称。谢谢。