Search in sources :

Example 1 with ListType

use of org.apache.parquet.thrift.struct.ThriftType.ListType in project parquet-mr by apache.

the class ParquetWriteProtocol method getProtocol.

private TProtocol getProtocol(ThriftField field, ColumnIO columnIO, Events returnClause) {
    TProtocol p;
    final ThriftType type = field.getType();
    switch(type.getType()) {
        case STOP:
        case VOID:
        default:
            throw new UnsupportedOperationException("can't convert type of " + field);
        case BOOL:
        case BYTE:
        case DOUBLE:
        case I16:
        case I32:
        case I64:
        case STRING:
            p = new PrimitiveWriteProtocol((PrimitiveColumnIO) columnIO, returnClause);
            break;
        case STRUCT:
            p = new StructWriteProtocol((GroupColumnIO) columnIO, (StructType) type, returnClause);
            break;
        case MAP:
            p = new MapWriteProtocol((GroupColumnIO) columnIO, (MapType) type, returnClause);
            break;
        case SET:
            p = new ListWriteProtocol((GroupColumnIO) columnIO, ((SetType) type).getValues(), returnClause);
            break;
        case LIST:
            p = new ListWriteProtocol((GroupColumnIO) columnIO, ((ListType) type).getValues(), returnClause);
            break;
        case ENUM:
            p = new EnumWriteProtocol((PrimitiveColumnIO) columnIO, (EnumType) type, returnClause);
            break;
    }
    return p;
}
Also used : ThriftType(org.apache.parquet.thrift.struct.ThriftType) StructType(org.apache.parquet.thrift.struct.ThriftType.StructType) PrimitiveColumnIO(org.apache.parquet.io.PrimitiveColumnIO) MapType(org.apache.parquet.thrift.struct.ThriftType.MapType) TProtocol(org.apache.thrift.protocol.TProtocol) GroupColumnIO(org.apache.parquet.io.GroupColumnIO) SetType(org.apache.parquet.thrift.struct.ThriftType.SetType) EnumType(org.apache.parquet.thrift.struct.ThriftType.EnumType) ListType(org.apache.parquet.thrift.struct.ThriftType.ListType)

Example 2 with ListType

use of org.apache.parquet.thrift.struct.ThriftType.ListType in project parquet-mr by apache.

the class BufferedProtocolReadToWrite method readOneValue.

/**
 * @return true when all value is consumed, false when some values is ignored due to the field is not defined in expectedType
 * @throws TException
 */
private boolean readOneValue(TProtocol in, byte type, List<Action> buffer, ThriftType expectedType) throws TException {
    if (expectedType != null && expectedType.getType().getSerializedThriftType() != type) {
        throw new DecodingSchemaMismatchException("the data type does not match the expected thrift structure: expected " + expectedType + " got " + typeName(type));
    }
    boolean hasFieldsIgnored = false;
    switch(type) {
        case TType.LIST:
            hasFieldsIgnored = readOneList(in, buffer, (ListType) expectedType);
            break;
        case TType.MAP:
            hasFieldsIgnored = readOneMap(in, buffer, (MapType) expectedType);
            break;
        case TType.SET:
            hasFieldsIgnored = readOneSet(in, buffer, (SetType) expectedType);
            break;
        case TType.STRUCT:
            hasFieldsIgnored = readOneStruct(in, buffer, (StructType) expectedType);
            break;
        case TType.STOP:
            break;
        case TType.BOOL:
            final boolean bool = in.readBool();
            writeBoolAction(buffer, bool);
            break;
        case TType.BYTE:
            final byte b = in.readByte();
            writeByteAction(buffer, b);
            break;
        case TType.DOUBLE:
            final double d = in.readDouble();
            writeDoubleAction(buffer, d);
            break;
        case TType.I16:
            final short s = in.readI16();
            writeShortAction(buffer, s);
            break;
        // same as i32 => actually never seen in the protocol layer as enums are written as a i32 field
        case TType.ENUM:
        case TType.I32:
            final int i = in.readI32();
            checkEnum(expectedType, i);
            writeIntAction(buffer, i);
            break;
        case TType.I64:
            final long l = in.readI64();
            writeLongAction(buffer, l);
            break;
        case TType.STRING:
            final ByteBuffer bin = in.readBinary();
            writeStringAction(buffer, bin);
            break;
        case TType.VOID:
            break;
        default:
            throw new TException("Unknown type: " + type);
    }
    return hasFieldsIgnored;
}
Also used : TException(org.apache.thrift.TException) StructType(org.apache.parquet.thrift.struct.ThriftType.StructType) ByteBuffer(java.nio.ByteBuffer) MapType(org.apache.parquet.thrift.struct.ThriftType.MapType) SetType(org.apache.parquet.thrift.struct.ThriftType.SetType) ListType(org.apache.parquet.thrift.struct.ThriftType.ListType)

Aggregations

ListType (org.apache.parquet.thrift.struct.ThriftType.ListType)2 MapType (org.apache.parquet.thrift.struct.ThriftType.MapType)2 SetType (org.apache.parquet.thrift.struct.ThriftType.SetType)2 StructType (org.apache.parquet.thrift.struct.ThriftType.StructType)2 ByteBuffer (java.nio.ByteBuffer)1 GroupColumnIO (org.apache.parquet.io.GroupColumnIO)1 PrimitiveColumnIO (org.apache.parquet.io.PrimitiveColumnIO)1 ThriftType (org.apache.parquet.thrift.struct.ThriftType)1 EnumType (org.apache.parquet.thrift.struct.ThriftType.EnumType)1 TException (org.apache.thrift.TException)1 TProtocol (org.apache.thrift.protocol.TProtocol)1