Java 如何从映射创建架构并注册到架构注册表
是否有一种从映射创建模式的方法 我有一个带有键值对的映射,并希望从中创建模式 我已经看过org.apache.avro.Schema类(来自avro-tools-1.8.2.jar),并且有下面这样的API来读取JSON并从中创建模式Java 如何从映射创建架构并注册到架构注册表,java,avro,confluent-schema-registry,Java,Avro,Confluent Schema Registry,是否有一种从映射创建模式的方法 我有一个带有键值对的映射,并希望从中创建模式 我已经看过org.apache.avro.Schema类(来自avro-tools-1.8.2.jar),并且有下面这样的API来读取JSON并从中创建模式 public Schema parse(File file) throws IOException { return parse(FACTORY.createJsonParser(file)); } public Schema parse(I
public Schema parse(File file) throws IOException {
return parse(FACTORY.createJsonParser(file));
}
public Schema parse(InputStream in) throws IOException {
return parse(FACTORY.createJsonParser(in).disable(
JsonParser.Feature.AUTO_CLOSE_SOURCE));
}
public Schema parse(String s, String... more) {
StringBuilder b = new StringBuilder(s);
for (String part : more)
b.append(part);
return parse(b.toString());
}
public Schema parse(String s) {
try {
return parse(FACTORY.createJsonParser(new StringReader(s)));
} catch (IOException e) {
throw new SchemaParseException(e);
}
}
有关于如何从映射创建模式的指针吗?创建模式后,我会将其注册到Confluent schema registry。我不确定是否要解析映射,但您可以在代码中构建模式,而不是解析JSON
范例
final Schema valueType = SchemaBuilder.builder().stringType();
Schema mapSchema = SchemaBuilder.map().values(valueType);
System.out.println(mapSchema);
// {"type":"map","values":"string"}
Schema recordSchemaWithMap = SchemaBuilder.builder("my.namespace.avro").record("MapData")
.fields()
.name("attributes").type(Schema.createMap(valueType)).noDefault()
.endRecord();
System.out.println(recordSchemaWithMap);
// {"type":"record","name":"MapData","namespace":"my.namespace.avro","fields":[{"name":"attributes","type":{"type":"map","values":"string"}}]}
如果在一些Map.Entry
值上循环并构建Schema对象,这可能会被扩展
注意:所有映射都包含字符串类型键我建议您学习AVDL或AVSC语法并使用Avro maven插件,否则请使用AvroThanks中的SchemaBuilder类进行输入。让我试试SchemaBuilder。非常感谢分享。