in pig/src/main/java/com/twitter/elephantbird/pig/util/ThriftToPig.java [276:296]
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));
}
}