In some corner cases, an Avro table may be loaded from the HMS incorrectly such that string columns may be loaded with other types.
This can happen when the avro schema's column definitions are inconsistent with the HMS StorageDescriptor's column definitions. This is relatively hard to do, but a bug in the Kite SDK (CDK-974) did produce this issue (and it has since been fixed https://github.com/kite-sdk/kite/pull/347/files ). Unfortunately I have not been able to reproduce this easily with just Impala/Hive.
We can't simply "fall back" if the # of cols is the same between the avro defs and the SD defs. We also should check that the col names are the same and that the SD col def is a STRING, CHAR, or VARCHAR.