联合字段的 Avro 无效默认值
Posted
技术标签:
【中文标题】联合字段的 Avro 无效默认值【英文标题】:Avro invalid default for union field 【发布时间】:2020-01-24 17:13:36 【问题描述】:我正在尝试序列化,然后写入 hortonworks schema registry 一个 avro 架构,但在写入操作期间我收到以下错误消息。
Caused by: java.lang.RuntimeException: An exception was thrown while processing request with message: [Invalid default for field viewingMode: null not a ["type":"record","name":"aName","namespace":"domain.assembled","fields":["name":"aKey","type":"string"],"type":"record","name":"anotherName","namespace":"domain.assembled","fields":["name":"anotherKey","type":"string","name":"yetAnotherKey","type":"string"]]]
at com.hortonworks.registries.schemaregistry.client.SchemaRegistryClient.handleSchemaIdVersionResponse(SchemaRegistryClient.java:678)
at com.hortonworks.registries.schemaregistry.client.SchemaRegistryClient.doAddSchemaVersion(SchemaRegistryClient.java:664)
at com.hortonworks.registries.schemaregistry.client.SchemaRegistryClient.lambda$addSchemaVersion$1(SchemaRegistryClient.java:591)
这是 avro 架构
"type": "record",
"name": "aSchema",
"namespace": "domain.assembled",
"fields": [
"name": "viewingMode",
"type": [
"name": "aName",
"type": "record",
"fields": [
"name": "aKey","type": "string"
]
,
"name": "anotherName",
"type": "record",
"fields": [
"name": "anotherKey","type": "string",
"name": "yetAnotherKey","type": "string"
]
]
]
如果我添加一个“null”作为联合的第一种类型,谁会成功。 avro 联合类型是否需要“null”?在我的情况下,这将是数据的不正确表示,所以我不热衷于这样做。 如果有什么不同,我使用的是 avro 1.9.1。
此外,如果标签不正确但找不到hortonworks-schema-registry
标签并且没有足够的代表来创建新标签,我们深表歉意。
【问题讨论】:
【参考方案1】:原来是 hortonwork 的架构注册表有问题。 这实际上已经修复了here,我已经申请了一个新版本here。希望这很快就会发生。
【讨论】:
以上是关于联合字段的 Avro 无效默认值的主要内容,如果未能解决你的问题,请参考以下文章
为啥 kafka-avro-console-producer 不遵守该字段的默认值?
如何在Avro Union逻辑类型字段中指定转换器的默认值?
php中的mysql数据库的,字段默认值该怎么输入,啥格式?