in scio-parquet/src/main/java/com/spotify/parquet/tensorflow/TensorflowExampleSchemaConverter.java [133:203]
private Feature convertField(final Type parquetType) {
if (!parquetType.isPrimitive()) {
throw new UnsupportedOperationException("Only primitive fields are supported");
} else {
final String featureName = parquetType.getName();
final PrimitiveType asPrimitive = parquetType.asPrimitiveType();
final PrimitiveType.PrimitiveTypeName parquetPrimitiveTypeName =
asPrimitive.getPrimitiveTypeName();
final Feature feature =
parquetPrimitiveTypeName.convert(
new PrimitiveType.PrimitiveTypeNameConverter<Feature, RuntimeException>() {
@Override
public Feature convertINT64(PrimitiveType.PrimitiveTypeName primitiveTypeName) {
return Feature.newBuilder().setName(featureName).setType(FeatureType.INT).build();
}
@Override
public Feature convertINT96(PrimitiveType.PrimitiveTypeName primitiveTypeName)
throws RuntimeException {
throw new UnsupportedOperationException(
"Unsupported primitive type: " + primitiveTypeName);
}
@Override
public Feature convertFIXED_LEN_BYTE_ARRAY(
PrimitiveType.PrimitiveTypeName primitiveTypeName) throws RuntimeException {
throw new UnsupportedOperationException(
"Unsupported primitive type: " + primitiveTypeName);
}
@Override
public Feature convertBOOLEAN(PrimitiveType.PrimitiveTypeName primitiveTypeName)
throws UnsupportedOperationException {
throw new UnsupportedOperationException(
"Unsupported primitive type: " + primitiveTypeName);
}
@Override
public Feature convertFLOAT(PrimitiveType.PrimitiveTypeName primitiveTypeName) {
return Feature.newBuilder()
.setName(featureName)
.setType(FeatureType.FLOAT)
.build();
}
@Override
public Feature convertDOUBLE(PrimitiveType.PrimitiveTypeName primitiveTypeName)
throws RuntimeException {
throw new UnsupportedOperationException(
"Unsupported primitive type: " + primitiveTypeName);
}
@Override
public Feature convertINT32(PrimitiveType.PrimitiveTypeName primitiveTypeName)
throws RuntimeException {
throw new UnsupportedOperationException(
"Unsupported primitive type: " + primitiveTypeName);
}
@Override
public Feature convertBINARY(PrimitiveType.PrimitiveTypeName primitiveTypeName) {
return Feature.newBuilder()
.setName(featureName)
.setType(FeatureType.BYTES)
.build();
}
});
final ValueCount valueCount = convertRepetition(asPrimitive.getRepetition());
return valueCount == null ? feature : feature.toBuilder().setValueCount(valueCount).build();
}
}