Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 无效值:空值用于必填字段:\";空\";,架构类型:字符串\n\t_Apache Kafka_Avro_Apache Kafka Connect_Confluent Schema Registry - Fatal编程技术网

Apache kafka 无效值:空值用于必填字段:\";空\";,架构类型:字符串\n\t

Apache kafka 无效值:空值用于必填字段:\";空\";,架构类型:字符串\n\t,apache-kafka,avro,apache-kafka-connect,confluent-schema-registry,Apache Kafka,Avro,Apache Kafka Connect,Confluent Schema Registry,我们正在升级到Confluent Platform 5.5.2,升级后,我们的一个Kafka JDBC接收器连接器(不是全部)开始出现以下错误日志问题 org.apache.kafka.connect.errors.ConnectException:错误处理程序中超出了容差\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOp

我们正在升级到Confluent Platform 5.5.2,升级后,我们的一个Kafka JDBC接收器连接器(不是全部)开始出现以下错误日志问题

org.apache.kafka.connect.errors.ConnectException:错误处理程序中超出了容差\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:178)\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execute(RetryWithToleranceOperator.java:104)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.convertAndTransformRecord(WorkerSinkTask.java:495)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.convertMessages(WorkerSinkTask.java:472)\n\tat org.apache.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:328)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask(WorkerSinkTask.java:232)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:204)\n\tat org.apache.kafka.connect.connect.runtime.WorkerSinkTask.exe(WorkerSinkTask.java:235)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n使用者:org.apache.kafka.connect.errors.SchemaBuilderException:无效的默认值\n\tat org.apache.kafka.connect.data.SchemaBuilder.defaultValue(SchemaBuilder.java:131)\n\tat io.confluent.connect.avro.AvroData.toConnectSchema(AvroData.java:1812)\n\tat io.confluent.connect.avro.AvroData.toConnectSchema(AvroData.java:1567)\n\tat io.confluent.connect.avro.AvroData.toConnectSchema(AvroData.java:1687)\n\tat io.confluent.connect.avro.AvroData.toConnectSchema(AvroData.java:1543)\n\tat io.confluent.connect.avro.AvroData.toConnectData(AvroData.java:1226)\n\tat io.confluent.connect.avro.AvroConverter.toConnectData(AvroConverter.java:108)\n\tat org.apache.kafka.connect.storage.Converter.toConnectData(Converter.java:87)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.lambda$convertAndTransformRecord$1(WorkerSinkTask.java:495)\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndRetry(RetryWithToleranceOperator.java:128)\n\t org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:162)\n\t…13更多\n原因:org.apache.kafka.connect.errors.DataException:无效值:null用于必填字段:\“null\”,架构类型:字符串\n\t org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:220)\n\tat org.apache.kafka.connect.data.ConnectSchema.validateValue(ConnectSchema.java:213)\n\tat org.apache.kafka.connect.data.schemabilder.defaultValue(schemabilder.java:129)\n\t…23更多\n

有人遇到同样的问题并已经解决了吗

我们还没有将Schema Registry升级到新版本(它仍然使用5.0.0版本),升级Schema Registry可能有助于解决此问题

更新:

  • 我们确实将Schema Registry升级到了相同的Confluent平台版本,但错误仍然在发生
固定的:

  • 我已查明根本原因是,我的AVRO架构中有一个字段“has
    type
    not include
    “null”
    值。在将
    “null”
    值添加到
    type
    后,问题已得到解决

您的错误可能是您的主题之一的avro模式在
default
字段中不一致。 当字段的
类型不允许
null
时,请检查您是否从未设置
“默认值”:null

例:

坏的字段:

{
    "default": null,
    "name": "field_name",
    "type": "string"
}
良好字段:

{
    "name": "field_name",
    "type": "string"
}
{
    "default": null,
    "name": "field_name",
    "type": [
        "null",
        "string"
    ]
}
或,良好字段:

{
    "name": "field_name",
    "type": "string"
}
{
    "default": null,
    "name": "field_name",
    "type": [
        "null",
        "string"
    ]
}

有什么解决方案吗?我在confluent-6.0.0上遇到了同样的异常。@felicienb,没有,还在等待其他人的响应。谢谢,我发现我的AVRO模式中的一个字段在“type”中没有“null”大小写。添加“null”后,问题已得到解决into
键入
确认这是解决我帖子中问题的正确解决方案。谢谢!我使用的正是“GOOD field”中的内容默认值为null,类型为。但它不起作用。这两种情况——传递可选字段和从json中跳过可选字段——都不起作用。我确认了这一点,看到了更多的线程/问题和bug-/。想知道这对您有何作用?