Flink这问题有人遇到过么?

Flink这问题有人遇到过么?求大神帮忙看看Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.flink.runtime.util.HadoopUtils.getHadoopConfiguration(Lorg/apache/flink/configuration/Configuration;)Lorg/apache/hadoop/conf/Configuration;" the class loader (instance of org/apache/flink/util/ChildFirstClassLoader) of the current class, com/ipinyou/cdp/task/flink/event/ParquetOutputFormat, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for the method's defining class, org/apache/flink/runtime/util/HadoopUtils, have different Class objects for the type org/apache/hadoop/conf/Configuration used in the signature

展开
收起
真的很搞笑 2023-08-28 14:35:29 318 分享 版权
1 条回答
写回答
取消 提交回答
  • 这个错误是由于类加载器冲突导致的。根据错误信息,引发错误的地方是在 com/ipinyou/cdp/task/flink/event/ParquetOutputFormat 类中调用了 org.apache.flink.runtime.util.HadoopUtils.getHadoopConfiguration(Configuration) 方法。
    错误信息指出,com/ipinyou/cdp/task/flink/event/ParquetOutputFormat 类使用的类加载器是 org/apache/flink/util/ChildFirstClassLoader,而 org/apache/flink/runtime/util/HadoopUtils 类中定义该方法的类加载器是 sun/misc/Launcher$AppClassLoader。两者使用了不同的 org/apache/hadoop/conf/Configuration 类对象,导致类加载器约束冲突。
    这种错误通常与依赖项、类加载器配置或类路径问题有关。可能的解决方法包括:

    1.检查依赖项:确保项目的依赖项正确并与 Flink 版本兼容。这可能涉及升级、降级或排除某些依赖项。
    2.类加载器配置:尝试调整类加载器配置以解决冲突。可以尝试使用 Flink 的 env.getParentClassLoader() 方法来获取父类加载器,并在构建 ParquetOutputFormat 实例时将其传递给构造函数。
    示例代码:

    ClassLoader parentClassLoader = env.getParentClassLoader();
    ParquetOutputFormat parquetOutputFormat = new ParquetOutputFormat(configuration, parentClassLoader);

    可根据实际情况修改类加载器的获取方式和传递方式。

    3.类路径冲突:检查类路径,确保没有重复或冲突的依赖项。某些依赖项可能已经包含在其他依赖项中,导致冲突。
    4.版本冲突:检查项目中使用的 Flink 版本与其他依赖项的版本是否一致。不同版本之间可能存在不兼容性。

    如果以上方法仍无法解决问题,请提供更多关于 Flink 版本、项目依赖项和代码示例的详细信息,以便更准确地诊断和解决问题。,此回答整理自钉群“【③群】Apache Flink China社区”

    2023-08-28 15:32:42
    赞同 展开评论

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

还有其他疑问?
咨询AI助理