You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flink1.13.2使用Hive方言执行Hive DDL抛出NullPointerException如何解决

问题根因说明

这个问题是Flink 1.13.x系列版本对接Hive 1.x版本时的已知Bug,根因是Hive 1.x中FunctionRegistry类的registerTemporaryFunction为实例方法,而非静态方法,但Flink的HiveShimV100类在反射调用该方法时错误地将调用对象传为null,最终触发空指针异常。

可行解决方案
  • 方案1:升级Flink版本
    官方在Flink 1.14.0及以上版本已经修复了该反射调用问题,直接将Flink版本升级到1.14.0+即可解决。
  • 方案2:补丁修复(适合不能升级Flink版本的场景)
    自行修改HiveShimV100的registerTemporaryFunction方法,先获取SessionState中的FunctionRegistry实例,再将实例作为反射调用的第一个参数传入,编译后替换项目和集群中flink-connector-hive包内的对应class文件即可。
  • 方案3:操作规避
    如果当前仅需要创建Hive维表,不需要通过Flink执行DDL,可以直接在Hive CLI/Beeline中提前创建好表,Flink侧直接使用HiveCatalog读取已存在的表即可绕开解析报错问题。
额外注意事项

你提供的Hive DDL中TBLPROPERTIES配置段重复定义了多组streaming-source相关的同名配置,实际运行时仅最后一组配置会生效,你需要根据自己需要的分区加载策略,删除另外两组不需要的配置,避免出现非预期的行为。


内容的提问来源于stack exchange,提问作者XiaoJunChen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:24:06