@Override
  public void initialize(Configuration configuration, Properties tableProperties, Properties partitionProperties)
      throws SerDeException {
    super.initialize(configuration, tableProperties, partitionProperties);

    this.mapTypes = Sets.newHashSet(properties.getProperty(MAP_TYPES, "").trim().split("\\s*,\\s*"));

    protoMessageClass = loadClass(properties.getProperty(PROTO_CLASS));
    Descriptor descriptor = loadDescriptor(protoMessageClass);

    Map<Descriptor, ObjectInspector> cache = new HashMap<>();
    this.objectInspector = createStructObjectInspector(descriptor, cache);

    Map<Descriptor, ProtoToHiveConvertor> convertorCache = new HashMap<>();
    this.convertor = createConvertor(descriptor, convertorCache);
  }
SerDe to convert ProtoWritable messages to Hive formats.
The serde supports the following properties:
<ul>
  <li>proto.class: This is required and specifies the class to be used to read the messages.</li>
  <li>proto.maptypes: This is optional it declares set of protobuf types that have to be
      converted to map objects instead of struct type. It is applied only on a repeated struct
      field. The message should have 2 fields, first is used as key and second is used as value.
  </li>
</ul>
ql/src/java/org/apache/hadoop/hive/ql/io/protobuf/ProtobufSerDe.java