Search in sources :

Example 6 with Type

use of com.netflix.metacat.common.type.Type in project metacat by Netflix.

the class PigTypeConverter method toCanonicalArrayType.

private Type toCanonicalArrayType(final LogicalSchema.LogicalFieldSchema field) {
    final LogicalSchema.LogicalFieldSchema subField = field.schema.getField(0);
    final Type elementType;
    if (subField.type == DataType.TUPLE && !TypeUtils.isNullOrEmpty(subField.schema.getFields()) && NAME_ARRAY_ELEMENT.equals(subField.schema.getFields().get(0).alias)) {
        elementType = toCanonicalType(subField.schema.getFields().get(0));
    } else {
        elementType = toCanonicalType(subField);
    }
    return new ArrayType(elementType);
}
Also used : ArrayType(com.netflix.metacat.common.type.ArrayType) DecimalType(com.netflix.metacat.common.type.DecimalType) ArrayType(com.netflix.metacat.common.type.ArrayType) BaseType(com.netflix.metacat.common.type.BaseType) Type(com.netflix.metacat.common.type.Type) CharType(com.netflix.metacat.common.type.CharType) VarcharType(com.netflix.metacat.common.type.VarcharType) DataType(org.apache.pig.data.DataType) RowType(com.netflix.metacat.common.type.RowType) MapType(com.netflix.metacat.common.type.MapType) LogicalSchema(org.apache.pig.newplan.logical.relational.LogicalSchema)

Example 7 with Type

use of com.netflix.metacat.common.type.Type in project metacat by Netflix.

the class PigTypeConverter method toCanonicalMapType.

private Type toCanonicalMapType(final LogicalSchema.LogicalFieldSchema field) {
    final Type key = BaseType.STRING;
    Type value = BaseType.UNKNOWN;
    if (null != field.schema && !TypeUtils.isNullOrEmpty(field.schema.getFields())) {
        value = toCanonicalType(field.schema.getFields().get(0));
    }
    return new MapType(key, value);
}
Also used : DecimalType(com.netflix.metacat.common.type.DecimalType) ArrayType(com.netflix.metacat.common.type.ArrayType) BaseType(com.netflix.metacat.common.type.BaseType) Type(com.netflix.metacat.common.type.Type) CharType(com.netflix.metacat.common.type.CharType) VarcharType(com.netflix.metacat.common.type.VarcharType) DataType(org.apache.pig.data.DataType) RowType(com.netflix.metacat.common.type.RowType) MapType(com.netflix.metacat.common.type.MapType) MapType(com.netflix.metacat.common.type.MapType)

Example 8 with Type

use of com.netflix.metacat.common.type.Type in project metacat by Netflix.

the class PigTypeConverter method fromCanonicalTypeToPigSchema.

private LogicalSchema.LogicalFieldSchema fromCanonicalTypeToPigSchema(final String alias, final Type canonicalType) {
    if (PigTypeMapping.getCANONICAL_TO_PIG().containsKey(canonicalType)) {
        return new LogicalSchema.LogicalFieldSchema(alias, null, PigTypeMapping.getCANONICAL_TO_PIG().get(canonicalType));
    } else if (canonicalType instanceof DecimalType) {
        return new LogicalSchema.LogicalFieldSchema(alias, null, DataType.DOUBLE);
    } else if (canonicalType instanceof VarcharType || canonicalType instanceof CharType) {
        return new LogicalSchema.LogicalFieldSchema(alias, null, DataType.CHARARRAY);
    } else if (canonicalType instanceof MapType) {
        final MapType mapType = (MapType) canonicalType;
        LogicalSchema schema = null;
        if (((MapType) canonicalType).getValueType() != null && !BaseType.UNKNOWN.equals(mapType.getValueType())) {
            schema = new LogicalSchema();
            schema.addField(fromCanonicalTypeToPigSchema(null, mapType.getValueType()));
        }
        return new LogicalSchema.LogicalFieldSchema(alias, schema, DataType.MAP);
    } else if (canonicalType instanceof ArrayType) {
        final ArrayType arrayType = (ArrayType) canonicalType;
        final LogicalSchema schema = new LogicalSchema();
        Type elementType = arrayType.getElementType();
        if (elementType != null) {
            if (!(elementType instanceof RowType)) {
                elementType = RowType.createRowType(Lists.newArrayList(elementType), ImmutableList.of(NAME_ARRAY_ELEMENT));
            }
            schema.addField(fromCanonicalTypeToPigSchema(null, elementType));
        }
        return new LogicalSchema.LogicalFieldSchema(alias, schema, DataType.BAG);
    } else if (canonicalType instanceof RowType) {
        final LogicalSchema schema = new LogicalSchema();
        for (RowType.RowField rowField : ((RowType) canonicalType).getFields()) {
            schema.addField(fromCanonicalTypeToPigSchema(rowField.getName() != null ? rowField.getName() : alias, rowField.getType()));
        }
        return new LogicalSchema.LogicalFieldSchema(alias, schema, DataType.TUPLE);
    }
    throw new IllegalArgumentException(String.format("Invalid for Pig converter: '%s'", canonicalType));
}
Also used : ArrayType(com.netflix.metacat.common.type.ArrayType) DecimalType(com.netflix.metacat.common.type.DecimalType) ArrayType(com.netflix.metacat.common.type.ArrayType) BaseType(com.netflix.metacat.common.type.BaseType) Type(com.netflix.metacat.common.type.Type) CharType(com.netflix.metacat.common.type.CharType) VarcharType(com.netflix.metacat.common.type.VarcharType) DataType(org.apache.pig.data.DataType) RowType(com.netflix.metacat.common.type.RowType) MapType(com.netflix.metacat.common.type.MapType) VarcharType(com.netflix.metacat.common.type.VarcharType) DecimalType(com.netflix.metacat.common.type.DecimalType) RowType(com.netflix.metacat.common.type.RowType) LogicalSchema(org.apache.pig.newplan.logical.relational.LogicalSchema) CharType(com.netflix.metacat.common.type.CharType) MapType(com.netflix.metacat.common.type.MapType)

Aggregations

Type (com.netflix.metacat.common.type.Type)8 BaseType (com.netflix.metacat.common.type.BaseType)7 DecimalType (com.netflix.metacat.common.type.DecimalType)7 ArrayType (com.netflix.metacat.common.type.ArrayType)6 CharType (com.netflix.metacat.common.type.CharType)6 VarcharType (com.netflix.metacat.common.type.VarcharType)6 MapType (com.netflix.metacat.common.type.MapType)5 RowType (com.netflix.metacat.common.type.RowType)5 VarbinaryType (com.netflix.metacat.common.type.VarbinaryType)3 DataType (org.apache.pig.data.DataType)3 LogicalSchema (org.apache.pig.newplan.logical.relational.LogicalSchema)2 ParametricType (com.netflix.metacat.common.type.ParametricType)1 TypeSignature (com.netflix.metacat.common.type.TypeSignature)1 ArrayList (java.util.ArrayList)1 ListObjectInspector (org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector)1 MapObjectInspector (org.apache.hadoop.hive.serde2.objectinspector.MapObjectInspector)1 StandardStructObjectInspector (org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector)1 StructField (org.apache.hadoop.hive.serde2.objectinspector.StructField)1 StructObjectInspector (org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector)1