У меня проблема с простой задачей spark, которая читает файл Avro, а затем сохраняет его как таблицу паркета Hive.
У меня есть 2 типа файла, в целом они одинаковы, но ключевая структура немного отличается - имена полей.
Тип 1
root
|-- pk: strucnt (nullable = true)
|-- term_id: string (nullale = true)
Тип 2
root
|-- pk: strucnt (nullable = true)
|-- id: string (nullale = true)
Я читаю Avro, используя spark-avro. А затем сопоставьте этот DF с таким bean-компонентом
Dataset<SomeClass> df = avroDF.as(Encoders.bean(SomeClass.class));
SomeClass — это простой класс с одним полем и геттером и сеттером.
public class SomeClass{
private String term_id;
...
}
Так что если я читаю Авро тип 1 - это нормально. Но если я читаю Авро типа 2 - возникает ошибка. И наоборот, если я меняю имя поля на private String id;
Есть ли универсальное решение моей проблемы? Я нашел @AvroName, но он не позволяет установить несколько имен. Спасибо.