code: private static FieldSchema singleFieldToFieldSchema(String fieldName, Field field) throws FrontendException {
      //TODO we should probably implement better naming, the current system is pretty nonsensical now
      switch (field.getType()) {
        case TType.STRUCT:
          return new FieldSchema(fieldName, toSchema(field.gettStructDescriptor()), DataType.TUPLE);
        case TType.LIST:
          return new FieldSchema(fieldName, singleFieldToTupleSchema(fieldName + "_tuple", field.getListElemField()), DataType.BAG);
        case TType.SET:
          return new FieldSchema(fieldName, singleFieldToTupleSchema(fieldName + "_tuple", field.getSetElemField()), DataType.BAG);
        case TType.MAP:
          if (field.getMapKeyField().getType() != TType.STRING
              && field.getMapKeyField().getType() != TType.ENUM) {
            LOG.warn("Using a map with non-string key for field " + field.getName()
                + ". while converting to PIG Tuple, toString() is used for the key."
                + " It could result in incorrect maps.");
          }
          return new FieldSchema(fieldName, new Schema(singleFieldToFieldSchema(null, field.getMapValueField())), DataType.MAP);
        default:
          return new FieldSchema(fieldName, null, getPigDataType(field));
      }
    }
docs: return {@link FieldSchema} for a given field.