开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

有遇到Flink这个错嘛?

有遇到Flink这个错嘛?ae7b69d7e90919241fcecf6547aa805d.png

展开
收起
真的很搞笑 2023-11-12 09:34:13 96 0
5 条回答
写回答
取消 提交回答
  • 十分耕耘,一定会有一分收获!

    楼主你好,看了你的报错提示,是你的Flink版本不一致造成的,你需要把使用的flink版本升级到最新版本再试一次,就可以搞定。

    2024-01-27 15:29:03
    赞同 1 展开评论 打赏
  • Flink版本不匹配,可以通过将本地Flink集群版本升级到最新版本来解决这个问题。
    image.png

    ——参考链接

    2024-01-21 23:46:38
    赞同 1 展开评论 打赏
  • 是的,在使用Apache Flink进行大数据处理过程中可能会出现各种异常和错误。从你给出的信息来看,你在执行SQL语句时遇到了一个问题,具体表现为以下堆栈跟踪日志:

    org.apache.flink.runtime.rest.util.RestClientException: [org.apache.flink.runtime.rest.handler.job.JobSubmitHandlerException: Failed to deserialize JobGraph.
    Caused by: java.lang.ClassCastException: cannot assign instance of java.util.LinkedHashMap to field org.apache.flink.runtime.jobgraph.JobVertex.results of type java.util.ArrayList in instance of org.apache.flink.runtime.jobgraph.InputOutputFormatVertex]
        at org.apache.flink.runtime.webmonitor.handlers.JobsWebHandler.handleJobList(JobsWebHandler.java:69)
    ...
    

    这个错误的原因似乎是试图将类型为 java.util.LinkedHashMap 的对象赋值到字段 results 上,而预期的是 java.util.ArrayList 类型的对象。这种类型的转换失败可能导致 ClassCastException 异常。

    如果你正在尝试将不同数据结构之间的映射关系应用于类实例,那么你需要考虑是否可以修改源代码来进行适当的调整。

    2024-01-15 10:04:53
    赞同 展开评论 打赏
  • 某政企事业单位安全运维工程师,主要从事系统运维及网络安全工作,多次获得阿里云、华为云、腾讯云征文比赛一二等奖;CTF选手,白帽,全国交通行业网络安全大赛二等奖,全国数信杯数据安全大赛银奖,手握多张EDU、CNVD、CNNVD证书。

    这是一段关于Flink程序无法正常提交并引发异常的日志输出。主要问题是由于序列化数据时发生ClassCastException(类型转换异常),尝试将LinkedHashMap类型的对象赋值给JobGraph.Vertex字段失败。

    以下是具体的步骤以及出现问题的地方:

    • RestClientException:这是由RestClientException抛出的一个异常,表示未能执行SQL语句。这可能是由于网络、认证或其他RESTful调用相关的问题引起的。

    • JobSubmitHandler.lambdaLoadJobGraph$2(JobSubmitHandler.java): 在lambda表达式内部发生了异常。

    • CompleteFutureAsyncSupply.run(CompletableFuture.java): 当异步任务完成时触发回调函数run()。

    • ScheduledThreadPoolExecutor.call(ScheduledThreadPoolExecutor.java): 使用线程池调度的任务开始执行。

    • ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java): 执行工作队列中的下一个Runnable任务。

    • Thread.run(Thread.java): 调度Thread的main()循环。

    • RestErrorHandler.error(RestErrorHandler.java): 发生错误后显示一条警告信息。

    • ClassCastException: 类型转换异常,试图将LinkedHashMap类型的对象赋值给JobGraph.Vertex的
      results_of_type_java.util.ArrayList属性。

    导致这种异常的具体原因是ObjectStreamClass.getFieldReflector().setObjFieldValues(ObjectStreamClass.java:2287),即Java.io.ObjectInputStream.readSerialData(ObjectInputStr.java:2211)读取的数据不适用于当前的对象结构。

    解决这类问题的一般思路是从源头追溯,查看哪一步操作引入了错误的对象类型,然后针对性地调整代码逻辑使其符合期望的行为模式。例如,在上述案例中,可以尝试替换 LinkedHashMap 为 ArrayList 或其他合适的容器类型,从而避免类型不匹配造成的CastExceprion。

    2024-01-13 15:32:36
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    这个错误是由于在Flink中尝试将一个JobVertex的结果序列化为一个LinkedHashMap,但是该结果的实际类型是一个Array。这个错误通常是由于在创建JobGraph时,某个Task的输出格式与预期的格式不匹配导致的。
    要解决这个问题,您需要检查您的JobGraph中的Task,特别是它们的输出格式。您可以在JobGraph的定义中使用JobVertex.setOutputFormat(new SomeOutputFormat())来显式地设置Task的输出格式。或者,您可以检查您的数据流处理管道,确保所有组件都使用正确的输出格式。

    2024-01-12 21:45:00
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载