@Override protected Schema outerSchema(Schema inner) { return Schema.createMap(inner); } }
@Override protected Schema outerSchema(Schema inner) { return Schema.createMap(inner); } }
private Schema removeFieldsFromMap(Schema schema, Map<String, Schema> schemaMap) { return Schema.createMap(this.removeFields(schema.getValueType(), schemaMap)); } }
private Schema createAvroMap(TypeInfo typeInfo) { TypeInfo keyTypeInfo = ((MapTypeInfo) typeInfo).getMapKeyTypeInfo(); if (((PrimitiveTypeInfo) keyTypeInfo).getPrimitiveCategory() != PrimitiveObjectInspector.PrimitiveCategory.STRING) { throw new UnsupportedOperationException("Key of Map can only be a String"); } TypeInfo valueTypeInfo = ((MapTypeInfo) typeInfo).getMapValueTypeInfo(); Schema valueSchema = createAvroSchema(valueTypeInfo); return Schema.createMap(valueSchema); }
@Override public Schema schema() { Schema schema = Schema.createMap(getElementConverter().schema()); schema.addProp("source.type", "map"); return schema; } }
@Override public Schema schema() { Schema schema = Schema.createMap(getElementConverter().schema()); schema.addProp(SOURCE_TYPE, MAP.toString().toLowerCase()); return buildUnionIfNullable(schema); } }
break; case MAP: newSchema = Schema.createMap(replace.get(nt.getValueType())); break; default:
final public Schema MapType() throws ParseException { Schema elemSchema; jj_consume_token(MAP); jj_consume_token(LT); elemSchema = Type(); jj_consume_token(GT); {if (true) return Schema.createMap(elemSchema);} throw new Error("Missing return statement in function"); }
break; case MAP: newSchema = Schema.createMap(replace.get(nt.getValueType())); break; default:
@Test public void testMapWithNonStringKeyToStringIsJson() throws Exception { Schema intMapSchema = new Schema.Parser().parse("{\"type\": \"map\", \"values\": \"string\", \"java-key-class\" : \"java.lang.Integer\"}"); Field intMapField = new Field("intMap", Schema.createMap(intMapSchema), null, null); Schema decMapSchema = new Schema.Parser().parse("{\"type\": \"map\", \"values\": \"string\", \"java-key-class\" : \"java.math.BigDecimal\"}"); Field decMapField = new Field("decMap", Schema.createMap(decMapSchema), null, null); Schema boolMapSchema = new Schema.Parser().parse("{\"type\": \"map\", \"values\": \"string\", \"java-key-class\" : \"java.lang.Boolean\"}"); Field boolMapField = new Field("boolMap", Schema.createMap(boolMapSchema), null, null); Schema fileMapSchema = new Schema.Parser().parse("{\"type\": \"map\", \"values\": \"string\", \"java-key-class\" : \"java.io.File\"}"); Field fileMapField = new Field("fileMap", Schema.createMap(fileMapSchema), null, null); Schema schema = Schema.createRecord("my_record", "doc", "mytest", false); schema.setFields(Arrays.asList(intMapField,decMapField,boolMapField,fileMapField));
case MAP: Schema v = addStringType(s.getValueType(), seen); result = Schema.createMap(v); GenericData.setStringType(result, stringType); break;
@Test public void testIsUnionOnMap() { Schema schema = Schema.createMap(Schema.create(Type.LONG)); assertFalse(schema.isUnion()); }
@Test public void testValidateArrayWriterSchema() throws Exception { final Schema validReader = Schema.createArray(STRING_SCHEMA); final Schema invalidReader = Schema.createMap(STRING_SCHEMA); final SchemaCompatibility.SchemaPairCompatibility validResult = new SchemaCompatibility.SchemaPairCompatibility(
@Test public void testDecimalWithNonByteArrayTypes() { final LogicalType decimal = LogicalTypes.decimal(5, 2); // test simple types Schema[] nonBytes = new Schema[] { Schema.createRecord("Record", null, null, false), Schema.createArray(Schema.create(Schema.Type.BYTES)), Schema.createMap(Schema.create(Schema.Type.BYTES)), Schema.createEnum("Enum", null, null, Arrays.asList("a", "b")), Schema.createUnion(Arrays.asList( Schema.create(Schema.Type.BYTES), Schema.createFixed("fixed", null, null, 4))), Schema.create(Schema.Type.BOOLEAN), Schema.create(Schema.Type.INT), Schema.create(Schema.Type.LONG), Schema.create(Schema.Type.FLOAT), Schema.create(Schema.Type.DOUBLE), Schema.create(Schema.Type.NULL), Schema.create(Schema.Type.STRING) }; for (final Schema schema : nonBytes) { assertThrows("Should reject type: " + schema.getType(), IllegalArgumentException.class, "Logical type decimal must be backed by fixed or bytes", new Callable() { @Override public Object call() throws Exception { decimal.addToSchema(schema); return null; } }); } }
throw new AvroTypeException("Empty map: "+datum); return Schema.createMap(value); } else if (datum instanceof GenericFixed) { return Schema.createFixed(null, null, null,
throw new AvroTypeException("Empty map: "+datum); return Schema.createMap(value); } else if (datum instanceof GenericFixed) { return Schema.createFixed(null, null, null,
if (mapMeta.keyMetaData.type != TType.STRING) throw new AvroRuntimeException("Map keys must be strings: "+f); Schema map = Schema.createMap(getSchema(mapMeta.valueMetaData)); GenericData.setStringType(map, GenericData.StringType.String); return nullable(map);
private static org.apache.avro.Schema getAvroSchemaForField( final String namespace, final String fieldName, final Schema fieldSchema ) { switch (fieldSchema.type()) { case STRING: return unionWithNull(create(org.apache.avro.Schema.Type.STRING)); case BOOLEAN: return unionWithNull(create(org.apache.avro.Schema.Type.BOOLEAN)); case INT32: return unionWithNull(create(org.apache.avro.Schema.Type.INT)); case INT64: return unionWithNull(create(org.apache.avro.Schema.Type.LONG)); case FLOAT64: return unionWithNull(create(org.apache.avro.Schema.Type.DOUBLE)); case ARRAY: return unionWithNull(createArray( getAvroSchemaForField(namespace, fieldName, fieldSchema.valueSchema()))); case MAP: return unionWithNull(createMap( getAvroSchemaForField(namespace, fieldName, fieldSchema.valueSchema()))); case STRUCT: return unionWithNull(buildAvroSchema(namespace, fieldName, fieldSchema)); default: throw new KsqlException("Unsupported AVRO type: " + fieldSchema.type().name()); } }
@Test public void testMap() { Schema intSchema = Schema.create(Schema.Type.INT); Schema expected = Schema.createMap(intSchema); Schema schema1 = SchemaBuilder.map().values().intType(); Assert.assertEquals(expected, schema1); Schema schema2 = SchemaBuilder.map().values(intSchema); Assert.assertEquals(expected, schema2); Schema schema3 = SchemaBuilder.map().prop("p", "v") .values().type("int"); expected.addProp("p", "v"); Assert.assertEquals(expected, schema3); }