【发布时间】:2018-08-28 11:48:51
【问题描述】:
我需要在我的 Avro 架构中为 logicalType: 'date' 添加一个 'null' 默认值。我目前的定义是这样的:
{
"type": "record",
"namespace": "my.model.package",
"name": "Person",
"version": "1",
"fields": [
{"name":"birthday","type": { "type": "int", "logicalType": "date"}}
]
}
当我用 org.joda.time.LocalDate 填充“生日”字段时,它确实有效,但是当我离开它时 null 我得到以下异常:
org.apache.kafka.common.errors.SerializationException: Error serializing Avro message
Caused by: java.lang.NullPointerException: null of int of my.model.package.Person
at org.apache.avro.generic.GenericDatumWriter.npe(GenericDatumWriter.java:145)
at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:139)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:75)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:62)
at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.serializeImpl(AbstractKafkaAvroSerializer.java:92)
at io.confluent.kafka.serializers.KafkaAvroSerializer.serialize(KafkaAvroSerializer.java:53)
at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:459)
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:436)
...
我尝试了许多方法来将此“logicalType”配置为可为空,但无法使其正常工作。如何将此字段配置为可为空?
【问题讨论】:
-
可以提供工作示例代码来复制错误吗?特别是您如何填充记录
标签: java apache-kafka schema avro