MapWritable is a hadoop thing (org.apache.hadoop.io.MapWritable). Hive need something that implements Writable. Why did we choose a map ? Because (maybe we are wrong) we need to map the name of the fields with its value.

Depending on the split, the parquetSchema can be different. We need to access to the right fields without dealing with an index. With an array, we might not have access to one field, and we don't want to be screwed or to add a fake field inside the array.