RainbowUni 2025-04-25 00:25 采纳率: 50%
浏览 10

Flink SQL建表出现jdk报错

Flink 1.19.2 Hive3.1.3 通过Flink SQL建表出现java包报错

通过linux不同用户环境变量配置,Flink为jdk11,hive jdk8 Hive可以正常建库建表,
但是在Flink SQL客户端内执行语句报如下错误

could not execute sql statement. reason: java.lang.classcastexception: class jdk.internal.loader.classloaders$appclassloader cannot be cast to class java.net.urlclassloader (jdk.internal.loader.classloaders$appclassloader and java.net.urlclassloader are in module java.base of loader 'bootstrap')

img

已经成功配置了hive catalog并且在Flink SQL内切换到注册库了,执行语句前切换到了hive方言,如下为建表语句

CREATE TABLE IF NOT EXISTS ods_mission_stream (
missionId BIGINT,
missionName STRING,
startTime TIMESTAMP,
endTime TIMESTAMP,
manager STRING,
state STRING
) STORED AS PARQUET;
  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-04-25 00:25
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    Flink SQL建表出现jdk报错

    你遇到的问题是,使用 Flink 1.19.2 和 Hive 3.1.3 通过 Flink SQL 建表时出现了 JDK 报错,且报错与 JDK 版本相关。

    问题的原因可能是 Flink 和 Hive 使用的 JDK 版本不同,Flink 使用的是 JDK 11,而 Hive 使用的是 JDK 8。这种情况下,Flink SQL 建表时可能会出现兼容性问题。

    解决方案:

    1. 使用同一个 JDK 版本:可以尝试使用同一个 JDK 版本来运行 Flink 和 Hive,例如使用 JDK 8。
    2. 配置 Flink 的 JDK 版本:可以在 Flink 的配置文件中指定 JDK 版本,例如在 flink-conf.yaml 文件中添加以下配置:
    java: "1.8"
    
    1. 使用 Hive 的 JDK 版本:可以在 Hive 的配置文件中指定 JDK 版本,例如在 hive-site.xml 文件中添加以下配置:
    <property name="hive.java.version" value="1.8"/>
    
    1. 重新编译 Flink 和 Hive:如果上述解决方案不起作用,可以尝试重新编译 Flink 和 Hive,以确保它们使用同一个 JDK 版本。

    希望这些解决方案能够帮助你解决问题。如果你需要更多帮助,请提供更多的错误信息和配置信息。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月25日