Description
When the data is read from the sources, the catalyst schema is always nullable. Since Avro uses Union type to represent nullable, when any non-nullable avro file is read and then written out, the schema will always be changed. This PR provides a solution for users to keep the Avro schema without being forced to use Union type.