code: public static GenericRecord convertRecordSchema(GenericRecord record, Schema newSchema) throws IOException {
      if (record.getSchema().equals(newSchema)) {
        return record;
      }
  
      try {
        BinaryDecoder decoder = new DecoderFactory().binaryDecoder(recordToByteArray(record), null);
        DatumReader<GenericRecord> reader = new GenericDatumReader<>(record.getSchema(), newSchema);
        return reader.read(null, decoder);
      } catch (IOException e) {
        throw new IOException(
            String.format("Cannot convert avro record to new schema. Origianl schema = %s, new schema = %s",
                record.getSchema(), newSchema),
            e);
      }
    }
docs: Change the schema of an Avro record.
  @param record The Avro record whose schema is to be changed.
  @param newSchema The target schema. It must be compatible as reader schema with record.getSchema() as writer schema.
  @return a new Avro record with the new schema.
  @throws IOException if conversion failed.