private List<Object> workerBase(List<Object> objectRow, Schema fileSchema, List<String> columnNames, List<TypeInfo> columnTypes, GenericRecord record) throws AvroSerdeException { for(int i = 0; i < columnNames.size(); i++) { TypeInfo columnType = columnTypes.get(i); String columnName = columnNames.get(i); Object datum = record.get(columnName); Schema datumSchema = record.getSchema().getField(columnName).schema(); Schema.Field field = AvroSerdeUtils.isNullableType(fileSchema)?AvroSerdeUtils.getOtherTypeFromNullableType(fileSchema).getField(columnName):fileSchema.getField(columnName); objectRow.add(worker(datum, field == null ? null : field.schema(), datumSchema, columnType)); } return objectRow; }
case UNION: if (AvroSerdeUtils.isNullableType(schema)) { return AvroUtils.getFieldSchemaHelper(AvroSerdeUtils.getOtherTypeFromNullableType(schema), pathList, field);
private static TypeInfo generateTypeInfoWorker(Schema schema, Set<Schema> seenSchemas) throws AvroSerdeException { // Avro requires NULLable types to be defined as unions of some type T // and NULL. This is annoying and we're going to hide it from the user. if(AvroSerdeUtils.isNullableType(schema)) { return generateTypeInfo( AvroSerdeUtils.getOtherTypeFromNullableType(schema), seenSchemas); } Schema.Type type = schema.getType(); if(primitiveTypeToTypeInfo.containsKey(type)) { return primitiveTypeToTypeInfo.get(type); } switch(type) { case RECORD: return generateRecordTypeInfo(schema, seenSchemas); case MAP: return generateMapTypeInfo(schema, seenSchemas); case ARRAY: return generateArrayTypeInfo(schema, seenSchemas); case UNION: return generateUnionTypeInfo(schema, seenSchemas); case ENUM: return generateEnumTypeInfo(schema); default: throw new AvroSerdeException("Do not yet support: " + schema); } }
private Object worker(Object datum, Schema fileSchema, Schema recordSchema, TypeInfo columnType) throws AvroSerdeException { if (datum == null) { return null; } // Avro requires nullable types to be defined as unions of some type T // and NULL. This is annoying and we're going to hide it from the user. if (AvroSerdeUtils.isNullableType(recordSchema)) { recordSchema = AvroSerdeUtils.getOtherTypeFromNullableType(recordSchema); } if (fileSchema != null && AvroSerdeUtils.isNullableType(fileSchema)) { fileSchema = AvroSerdeUtils.getOtherTypeFromNullableType(fileSchema); } switch(columnType.getCategory()) { case STRUCT: return deserializeStruct((GenericData.Record) datum, fileSchema, (StructTypeInfo) columnType); case UNION: return deserializeUnion(datum, fileSchema, recordSchema, (UnionTypeInfo) columnType); case LIST: return deserializeList(datum, fileSchema, recordSchema, (ListTypeInfo) columnType); case MAP: return deserializeMap(datum, fileSchema, recordSchema, (MapTypeInfo) columnType); case PRIMITIVE: return deserializePrimitive(datum, fileSchema, recordSchema, (PrimitiveTypeInfo) columnType); default: throw new AvroSerdeException("Unknown TypeInfo: " + columnType.getCategory()); } }
schema = AvroSerdeUtils.getOtherTypeFromNullableType(schema);
private List<Object> workerBase(List<Object> objectRow, Schema fileSchema, List<String> columnNames, List<TypeInfo> columnTypes, GenericRecord record) throws AvroSerdeException { for(int i = 0; i < columnNames.size(); i++) { TypeInfo columnType = columnTypes.get(i); String columnName = columnNames.get(i); Object datum = record.get(columnName); Schema datumSchema = record.getSchema().getField(columnName).schema(); Schema.Field field = AvroSerdeUtils.isNullableType(fileSchema)?AvroSerdeUtils.getOtherTypeFromNullableType(fileSchema).getField(columnName):fileSchema.getField(columnName); objectRow.add(worker(datum, field == null ? null : field.schema(), datumSchema, columnType)); } return objectRow; }
private List<Object> workerBase(List<Object> objectRow, Schema fileSchema, List<String> columnNames, List<TypeInfo> columnTypes, GenericRecord record) throws AvroSerdeException { for(int i = 0; i < columnNames.size(); i++) { TypeInfo columnType = columnTypes.get(i); String columnName = columnNames.get(i); Object datum = record.get(columnName); Schema datumSchema = record.getSchema().getField(columnName).schema(); Schema.Field field = AvroSerdeUtils.isNullableType(fileSchema)?AvroSerdeUtils.getOtherTypeFromNullableType(fileSchema).getField(columnName):fileSchema.getField(columnName); objectRow.add(worker(datum, field == null ? null : field.schema(), datumSchema, columnType)); } return objectRow; }
private List<Object> workerBase(List<Object> objectRow, Schema fileSchema, List<String> columnNames, List<TypeInfo> columnTypes, GenericRecord record) throws AvroSerdeException { for(int i = 0; i < columnNames.size(); i++) { TypeInfo columnType = columnTypes.get(i); String columnName = columnNames.get(i); Object datum = record.get(columnName); Schema datumSchema = record.getSchema().getField(columnName).schema(); Schema.Field field = AvroSerdeUtils.isNullableType(fileSchema)?AvroSerdeUtils.getOtherTypeFromNullableType(fileSchema).getField(columnName):fileSchema.getField(columnName); objectRow.add(worker(datum, field == null ? null : field.schema(), datumSchema, columnType)); } return objectRow; }
private List<Object> workerBase(List<Object> objectRow, Schema fileSchema, List<String> columnNames, List<TypeInfo> columnTypes, GenericRecord record) throws AvroSerdeException { for(int i = 0; i < columnNames.size(); i++) { TypeInfo columnType = columnTypes.get(i); String columnName = columnNames.get(i); Object datum = record.get(columnName); Schema datumSchema = record.getSchema().getField(columnName).schema(); Schema.Field field = AvroSerdeUtils.isNullableType(fileSchema)?AvroSerdeUtils.getOtherTypeFromNullableType(fileSchema).getField(columnName):fileSchema.getField(columnName); objectRow.add(worker(datum, field == null ? null : field.schema(), datumSchema, columnType)); } return objectRow; }
case UNION: if (AvroSerdeUtils.isNullableType(schema)) { return AvroUtils.getFieldSchemaHelper(AvroSerdeUtils.getOtherTypeFromNullableType(schema), pathList, field);
private static TypeInfo generateTypeInfoWorker(Schema schema, Set<Schema> seenSchemas) throws AvroSerdeException { // Avro requires NULLable types to be defined as unions of some type T // and NULL. This is annoying and we're going to hide it from the user. if(AvroSerdeUtils.isNullableType(schema)) { return generateTypeInfo( AvroSerdeUtils.getOtherTypeFromNullableType(schema), seenSchemas); } Schema.Type type = schema.getType(); if(primitiveTypeToTypeInfo.containsKey(type)) { return primitiveTypeToTypeInfo.get(type); } switch(type) { case RECORD: return generateRecordTypeInfo(schema, seenSchemas); case MAP: return generateMapTypeInfo(schema, seenSchemas); case ARRAY: return generateArrayTypeInfo(schema, seenSchemas); case UNION: return generateUnionTypeInfo(schema, seenSchemas); case ENUM: return generateEnumTypeInfo(schema); default: throw new AvroSerdeException("Do not yet support: " + schema); } }
private static TypeInfo generateTypeInfoWorker(Schema schema, Set<Schema> seenSchemas) throws AvroSerdeException { // Avro requires NULLable types to be defined as unions of some type T // and NULL. This is annoying and we're going to hide it from the user. if(AvroSerdeUtils.isNullableType(schema)) { return generateTypeInfo( AvroSerdeUtils.getOtherTypeFromNullableType(schema), seenSchemas); } Schema.Type type = schema.getType(); if(primitiveTypeToTypeInfo.containsKey(type)) { return primitiveTypeToTypeInfo.get(type); } switch(type) { case RECORD: return generateRecordTypeInfo(schema, seenSchemas); case MAP: return generateMapTypeInfo(schema, seenSchemas); case ARRAY: return generateArrayTypeInfo(schema, seenSchemas); case UNION: return generateUnionTypeInfo(schema, seenSchemas); case ENUM: return generateEnumTypeInfo(schema); default: throw new AvroSerdeException("Do not yet support: " + schema); } }
private static TypeInfo generateTypeInfoWorker(Schema schema, Set<Schema> seenSchemas) throws AvroSerdeException { // Avro requires NULLable types to be defined as unions of some type T // and NULL. This is annoying and we're going to hide it from the user. if(AvroSerdeUtils.isNullableType(schema)) { return generateTypeInfo( AvroSerdeUtils.getOtherTypeFromNullableType(schema), seenSchemas); } Schema.Type type = schema.getType(); if(primitiveTypeToTypeInfo.containsKey(type)) { return primitiveTypeToTypeInfo.get(type); } switch(type) { case RECORD: return generateRecordTypeInfo(schema, seenSchemas); case MAP: return generateMapTypeInfo(schema, seenSchemas); case ARRAY: return generateArrayTypeInfo(schema, seenSchemas); case UNION: return generateUnionTypeInfo(schema, seenSchemas); case ENUM: return generateEnumTypeInfo(schema); default: throw new AvroSerdeException("Do not yet support: " + schema); } }
private static TypeInfo generateTypeInfoWorker(Schema schema, Set<Schema> seenSchemas) throws AvroSerdeException { // Avro requires NULLable types to be defined as unions of some type T // and NULL. This is annoying and we're going to hide it from the user. if(AvroSerdeUtils.isNullableType(schema)) { return generateTypeInfo( AvroSerdeUtils.getOtherTypeFromNullableType(schema), seenSchemas); } Schema.Type type = schema.getType(); if(primitiveTypeToTypeInfo.containsKey(type)) { return primitiveTypeToTypeInfo.get(type); } switch(type) { case RECORD: return generateRecordTypeInfo(schema, seenSchemas); case MAP: return generateMapTypeInfo(schema, seenSchemas); case ARRAY: return generateArrayTypeInfo(schema, seenSchemas); case UNION: return generateUnionTypeInfo(schema, seenSchemas); case ENUM: return generateEnumTypeInfo(schema); default: throw new AvroSerdeException("Do not yet support: " + schema); } }
private static TypeInfo generateTypeInfoWorker(Schema schema) throws AvroSerdeException { // Avro requires NULLable types to be defined as unions of some type T // and NULL. This is annoying and we're going to hide it from the user. if(AvroSerdeUtils.isNullableType(schema)) return generateTypeInfo(AvroSerdeUtils.getOtherTypeFromNullableType(schema)); Schema.Type type = schema.getType(); if(primitiveTypeToTypeInfo.containsKey(type)) return primitiveTypeToTypeInfo.get(type); switch(type) { case BYTES: return generateBytesTypeInfo(schema); case RECORD: return generateRecordTypeInfo(schema); case MAP: return generateMapTypeInfo(schema); case ARRAY: return generateArrayTypeInfo(schema); case UNION: return generateUnionTypeInfo(schema); case ENUM: return generateEnumTypeInfo(schema); case FIXED: return generateFixedTypeInfo(schema); default: throw new AvroSerdeException("Do not yet support: " + schema); } }
private Object worker(Object datum, Schema fileSchema, Schema recordSchema, TypeInfo columnType) throws AvroSerdeException { if (datum == null) { return null; } // Avro requires nullable types to be defined as unions of some type T // and NULL. This is annoying and we're going to hide it from the user. if (AvroSerdeUtils.isNullableType(recordSchema)) { recordSchema = AvroSerdeUtils.getOtherTypeFromNullableType(recordSchema); } if (fileSchema != null && AvroSerdeUtils.isNullableType(fileSchema)) { fileSchema = AvroSerdeUtils.getOtherTypeFromNullableType(fileSchema); } switch(columnType.getCategory()) { case STRUCT: return deserializeStruct((GenericData.Record) datum, fileSchema, (StructTypeInfo) columnType); case UNION: return deserializeUnion(datum, fileSchema, recordSchema, (UnionTypeInfo) columnType); case LIST: return deserializeList(datum, fileSchema, recordSchema, (ListTypeInfo) columnType); case MAP: return deserializeMap(datum, fileSchema, recordSchema, (MapTypeInfo) columnType); case PRIMITIVE: return deserializePrimitive(datum, fileSchema, recordSchema, (PrimitiveTypeInfo) columnType); default: throw new AvroSerdeException("Unknown TypeInfo: " + columnType.getCategory()); } }
schema = AvroSerdeUtils.getOtherTypeFromNullableType(schema);
schema = AvroSerdeUtils.getOtherTypeFromNullableType(schema);
schema = AvroSerdeUtils.getOtherTypeFromNullableType(schema);
schema = AvroSerdeUtils.getOtherTypeFromNullableType(schema);