org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "status" (class org.apache.flink.runtime.rest.messages.ErrorResponseBody), not marked as ignorable (one known property: "errors"])
at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: org.apache.flink.runtime.rest.messages.ErrorResponseBody["status"])
flink1.8.1 cdc3.2.0 报这个错,有遇到的吗
StreamExecutionEnvironment env = StreamExecutionEnvironment.createRemoteEnvironment("localhost",8991);
这个错误 org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException
表示在使用 Jackson 库进行 JSON 序列化或反序列化时,遇到了一个无法识别的属性。在你提供的错误信息中,Jackson 在尝试将 JSON 数据反序列化为 org.apache.flink.runtime.rest.messages.ErrorResponseBody
类的对象时,发现了一个名为 "status"
的属性,但 ErrorResponseBody
类中没有这个属性,而 Jackson 只知道 ErrorResponseBody
类中有一个名为 "errors"
的属性。
对于 flink 1.8.1
和 cdc 3.2.0
报出这个错误,可能有以下原因及解决方法:
原因分析:
ErrorResponseBody
类所期望的格式不匹配。也就是说,数据源发送的 JSON 中包含了 "status"
这个属性,但你的代码中定义的 ErrorResponseBody
类没有对应的 status
字段来接收这个属性值。flink 1.8.1
和 cdc 3.2.0
之间可能存在一些版本兼容性问题,导致数据处理过程中出现这种异常。也许在某个版本的更新中,数据格式或者类的定义发生了变化,但你的代码没有相应地进行更新。解决方法:
ErrorResponseBody
类的定义,确保它与实际接收到的数据格式相匹配。如果 status
字段不是你所需要的,那么需要检查数据的来源并进行相应的调整。flink
和 cdc
的相关文档,了解是否有针对这个问题的更新或解决方案。根据文档的建议,更新你的代码或依赖库的版本。status
字段是后来添加到数据中的,那么需要更新 ErrorResponseBody
类,添加对应的 status
字段以及相应的 getter 和 setter 方法,以便 Jackson 能够正确地反序列化数据。UnrecognizedPropertyException
异常,并根据具体情况进行处理。例如,你可以记录错误信息,或者返回一个默认值或错误响应给调用方。status
字段是不必要的,可以在 ErrorResponseBody
类上使用 @JsonIgnoreProperties(ignoreUnknown = true)
注解,告诉 Jackson 在反序列化时忽略未知的属性,这样就不会抛出 UnrecognizedPropertyException
异常。但是这种方法需要谨慎使用,确保忽略未知属性不会影响到程序的正常逻辑。以下是一个简单的示例代码,展示了如何在 ErrorResponseBody
类上使用 @JsonIgnoreProperties(ignoreUnknown = true)
注解:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class ErrorResponseBody {
private String[] errors;
public String[] getErrors() {
return errors;
}
public void setErrors(String[] errors) {
this.errors = errors;
}
}
通过以上方法,应该可以解决 UnrecognizedPropertyException
异常。如果问题仍然存在,可能需要进一步分析数据的来源和代码的逻辑,以确定问题的根本原因。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。