public String getTypesString() {
    StringBuilder sb = new StringBuilder();
    for (ColumnMapping columnMapping : columnMappings) {
      if (sb.length() > 0) {
        sb.append(AccumuloHiveConstants.COLON);
      }

      if (columnMapping instanceof HiveAccumuloRowIdColumnMapping) {
        // the rowID column is a string
        sb.append(serdeConstants.STRING_TYPE_NAME);
      } else if (columnMapping instanceof HiveAccumuloColumnMapping) {
        // a normal column is also a string
        sb.append(serdeConstants.STRING_TYPE_NAME);
      } else if (columnMapping instanceof HiveAccumuloMapColumnMapping) {
        // TODO can we be more precise than string,string?
        sb.append(serdeConstants.MAP_TYPE_NAME).append("<").append(serdeConstants.STRING_TYPE_NAME)
            .append(",").append(serdeConstants.STRING_TYPE_NAME).append(">");
      } else {
        throw new IllegalArgumentException("Cannot process ColumnMapping of type "
            + columnMapping.getClass().getName());
      }
    }

    return sb.toString();
  }
Create a mapping from Hive columns (rowID and column) to Accumulo columns (column family and
qualifier). The ordering of the {@link ColumnMapping}s is important as it aligns with the
ordering of the columns for the Hive table schema.

@param serializedColumnMappings
         Comma-separated list of designators that map to Accumulo columns whose offsets
         correspond to the Hive table schema
@throws TooManyAccumuloColumnsException
accumulo-handler/src/java/org/apache/hadoop/hive/accumulo/columns/ColumnMapper.java